Numpy子阵列对象引用和界面怪异

时间:2017-09-26 22:25:41

标签: python numpy

所以,这很奇怪:

>>> arr = np.array([[1, 2], [3, 4]])
>>> arr[0, 1] is arr[0, 1]
False
>>> id(arr[0, 1]) == id(arr[0, 1])
True
>>> arr[0, 1].__array_interface__['data']
(140500408506000, False)
>>> arr[0, 1].__array_interface__
{'data': (140500407499344, False), 'strides': None, 'descr': [('', '<i8')], 'typestr': '<i8', 'shape': (), 'version': 3, '__ref': array(2)}
>>> arr[0, 1].__array_interface__
{'data': (140500408506000, False), 'strides': None, 'descr': [('', '<i8')], 'typestr': '<i8', 'shape': (), 'version': 3, '__ref': array(2)}
>>> arr[0, 1].__array_interface__
{'data': (140500407499344, False), 'strides': None, 'descr': [('', '<i8')], 'typestr': '<i8', 'shape': (), 'version': 3, '__ref': array(2)}

我在这里遇到三个问题:

  1. 如果数组对象具有相同的False,为什么它们相等?id?如何在这里检查对象平等?
  2. 为什么从data中提取array_interface会显示不同的内存位置,而不请求data会显示data的不同值?
  3. 一旦我再次调用array_interfaces,它实际上翻转基础数据引用。这里发生了什么事?
  4. 关于Numpy引用的

    This great answer似乎没有解决这些问题。

0 个答案:

没有答案