如何将列表添加为numpy n-D矩阵的元素

时间:2016-10-26 12:11:17

标签: python list numpy matrix append

我一直在努力寻找一种方法将一个列表放在一个n-D矩阵中。我想要的是有一个numpy n-D矩阵,该矩阵内的所有元素都应该是列表。这样我就可以在这些列表中添加/附加数​​字。

 A = [X1,X2,X3]
     [Y1,Y2,Y3]
     [Z1,Z2,Z3]

所有的X,Y和Z都是LISTS。 提前致谢

2 个答案:

答案 0 :(得分:1)

制作这样一个数组的一般方法是初始化一个对象数组,并用你的列表填充它:

In [1706]: A=np.empty((3,3),dtype=object)
In [1707]: A
Out[1707]: 
array([[None, None, None],
       [None, None, None],
       [None, None, None]], dtype=object)
In [1708]: A[0,1]=[1,2]
In [1709]: A[0,0]=[[1]]
In [1710]: A
Out[1710]: 
array([[[[1]], [1, 2], None],
       [None, None, None],
       [None, None, None]], dtype=object)

如果列表大小不同,您可以直接构建这样的数组:

In [1711]: np.array([[1,2,3],[1]])
Out[1711]: array([[1, 2, 3], [1]], dtype=object)

但是如果它们都相同,你将获得更高维度的数组

In [1712]: np.array([[1,2,3],[1,3,4]])
Out[1712]: 
array([[1, 2, 3],
       [1, 3, 4]])

创建对象数组的主题经常出现。

答案 1 :(得分:0)

将它们保存为列表,并创建一个numpy对象数组

X1, X2, X3, Y1, Y2, Y3, Z1, Z2, Z3 = [], [], [], [] ,[] ,[] ,[] ,[] ,[]
my_array = np.array([[X1,X2,X3],[Y1,Y2,Y3],[Z1,Z2,Z3]])
#Suppose you want to append 690 to X1,
my_array[0,1].append(690)