Python 有没有办法让numpy矩阵来存储对象?

Python 有没有办法让numpy矩阵来存储对象?,python,object,numpy,matrix,Python,Object,Numpy,Matrix,我想在numpy矩阵中存储一个元组,但它似乎会返回一个错误。有办法吗 >>> import numpy >>> y = numpy.zeros((4,4)) >>> y[1][1] = (1,1) ValueError: setting an array element with a sequence. 谢谢使用dtype=object,您可以在数组中放入所需的任何内容: >>> arr = np.zeros((4, 4

我想在numpy矩阵中存储一个元组,但它似乎会返回一个错误。有办法吗

>>> import numpy
>>> y = numpy.zeros((4,4))
>>> y[1][1] = (1,1)

ValueError: setting an array element with a sequence.

谢谢

使用
dtype=object
,您可以在数组中放入所需的任何内容:

>>> arr = np.zeros((4, 4), dtype=object)
>>> arr[1, 1] = (1, 1)
>>> arr
array([[0, 0, 0, 0],
       [0, (1, 1), 0, 0],
       [0, 0, 0, 0],
       [0, 0, 0, 0]], dtype=object)
您可以使用。例如:

>>> import numpy as np
>>> y = np.zeros((4, 4), dtype=("i8, i8"))
array([[(0L, 0L), (0L, 0L), (0L, 0L), (0L, 0L)],
       [(0L, 0L), (0L, 0L), (0L, 0L), (0L, 0L)],
       [(0L, 0L), (0L, 0L), (0L, 0L), (0L, 0L)],
       [(0L, 0L), (0L, 0L), (0L, 0L), (0L, 0L)]],
      dtype=[('f0', '<i8'), ('f1', '<i8')])

>>> y[1,1] = (1,1)
>>> y
array([[(0L, 0L), (0L, 0L), (0L, 0L), (0L, 0L)],
       [(0L, 0L), (1L, 1L), (0L, 0L), (0L, 0L)],
       [(0L, 0L), (0L, 0L), (0L, 0L), (0L, 0L)],
       [(0L, 0L), (0L, 0L), (0L, 0L), (0L, 0L)]],
      dtype=[('f0', '<i8'), ('f1', '<i8')])
>>将numpy作为np导入
>>>y=np.zero((4,4),dtype=(“i8,i8”))
数组([(0L,0L),(0L,0L),(0L,0L),(0L,0L)],
[(0L,0L),(0L,0L),(0L,0L),(0L,0L)],
[(0L,0L),(0L,0L),(0L,0L),(0L,0L)],
[(0L,0L),(0L,0L),(0L,0L),(0L,0L)],

dtype=[('f0',在所有要存储的元组都是n个数字元组的特殊情况下,只需使用(n+1)-d数据数组即可。这将更快、更高效、更易于使用。