我发现使用NumPy和自定义ndarray dtype时出现以下令人困惑的行为:
现在,这个结果不是我所期望的 [1. 1. 1.],而是 [1. 0. 0.],只对第一个坐标进行了赋值。我可以通过逐个坐标进行赋值来解决这个问题,但考虑到完全赋值应该是默认行为,这样做似乎是不必要的。
您对此有什么想法?
import numpy as np
# Make a custom dtype with a single triplet of floats (my actual dtype has other
# components, but this suffices to demonstrate the problem.
dt = np.dtype([('a', np.float64, 3)])
# Make a zero array with this dtype:
points = np.zeros((4, 4), dtype=dt)
# Try to edit an entry:
points[0][0]['a'] = np.array([1, 1, 1])
print points[0][0]['a']
现在,这个结果不是我所期望的 [1. 1. 1.],而是 [1. 0. 0.],只对第一个坐标进行了赋值。我可以通过逐个坐标进行赋值来解决这个问题,但考虑到完全赋值应该是默认行为,这样做似乎是不必要的。
您对此有什么想法?
p = points[0][0] p['a'] = np.array([1, 1, 1])
如果需要的话,还可以对p进行其他操作。 - Tim Kunisky