A = np.arange(12)
B = A.reshape(3, 4)
A[0] = 42
print(B)
print(A)
print(np.may_share_memory(A, B))
print(A.data == B.data)
运行上面的代码,我很惊讶print(A.data == B.data)
返回False
。似乎A和B共享了一些内存,他们的第一个元素应该共享。然后,如果numpy.ndarray.data
是一个指向数组数据开头的对象(如文档所述),那么它将在A
和B
上产生相同的结果。你知道吗
Tags:
我更喜欢用
__array_interface__
来查看属性,包括数据缓冲区地址:A.__array_interface__['data'][0]
值不匹配A.data
的文档是:但对于普通的Python程序员来说,这可能是一种误导。
@ajcr
的评论更好。“buffer object”和数组数据缓冲区的地址之间存在差异。你知道吗=============
我很少使用
data
属性。少数情况之一是使用ndarray
函数创建数组how can I specify the memory address of a Numpy array using ctypes?
==================
A.data
只打印其repr
,与以下内容一样无信息性:相关问题 更多 >
编程相关推荐