我想对多维数组进行赋值,其中数组的每个元素都是3个短整数:
a = ndarray([3,3,3], dtype='u2,u2,u2')
a[2,2,2] = [1,2,3]
追踪(最近一次通话): 文件“”,第1行,in a [2,2,2] = [1,2,3] TypeError:期望一个可读的缓冲区对象
我将使用一个大型数组,并希望直接索引到数组中以获得性能。在python中执行此操作的好方法是什么?
感谢您对如何做到这一点有任何见解?
答案 0 :(得分:1)
dtype='u2,u2,u2'
数组的元素是三个短片的元组,而不是三个短片的列表。所以:
a[2,2,2] = (1,2,3)
(parens当然不是必需的,但我用它们来表明这是一个元组。)
如果您愿意,也可以传递array
:
a[2,2,2] = np.array([1,2,3])
当然,这里的错误信息当然可能会更好......它实际上抱怨的是比你期望的更深的东西,它无助于你调试问题。