Python:将列表分配给多维数组元素

Python:将列表分配给多维数组元素,python,numpy,Python,Numpy,我想对多维数组进行赋值,其中数组的每个元素都是3个短整数: a = ndarray([3,3,3], dtype='u2,u2,u2') a[2,2,2] = [1,2,3] 回溯(最近一次呼叫最后一次): 文件“”,第1行,在 a[2,2,2]=[1,2,3] TypeError:应为可读缓冲区对象 我将使用一个大型数组,并希望直接索引到数组中以提高性能。用python做这件事的好方法是什么 感谢您了解如何执行此操作?一个dtype='u2,u2,u2'数组的元素是三个短字符的元组,而不是三

我想对多维数组进行赋值,其中数组的每个元素都是3个短整数:

a = ndarray([3,3,3], dtype='u2,u2,u2')
a[2,2,2] = [1,2,3]
回溯(最近一次呼叫最后一次): 文件“”,第1行,在 a[2,2,2]=[1,2,3] TypeError:应为可读缓冲区对象

我将使用一个大型数组,并希望直接索引到数组中以提高性能。用python做这件事的好方法是什么


感谢您了解如何执行此操作?

一个
dtype='u2,u2,u2'
数组的元素是三个短字符的元组,而不是三个短字符的列表。因此:

a[2,2,2] = (1,2,3)
(paren当然不是必需的,但我用它们来说明这是一个元组。)

如果需要,还可以向其传递一个
数组

a[2,2,2] = np.array([1,2,3])

当然,这里的错误消息肯定会更好…它实际上抱怨的是比您预期的更深的东西,并且它不能帮助您调试问题。

谢谢您的评论。这很有帮助。如果我在函数中获取一个列表作为参数,我是否必须将其转换为元组才能对数组进行赋值?将3个数值坐标作为函数参数指定给数组元素最有效的方法是什么?谢谢我不确定调用
a[x,y,z]=tuple(foo)
a[x,y,z]=np.array(foo)
快还是慢;如果有关系,就测试一下。但我怀疑这是否重要。如果这很重要的话,可能是因为您在一个大循环中进行,在这种情况下,您需要解决的真正问题是使用Python循环而不是向量化。