Python:将列表分配给多维数组元素
我想对多维数组进行赋值,其中数组的每个元素都是3个短整数: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'数组的元素是三个短字符的元组,而不是三
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循环而不是向量化。