我一直在努力寻找一种方法将一个列表放在一个n-D矩阵中。我想要的是有一个numpy n-D矩阵,该矩阵内的所有元素都应该是列表。这样我就可以在这些列表中添加/附加数字。
A = [X1,X2,X3]
[Y1,Y2,Y3]
[Z1,Z2,Z3]
所有的X,Y和Z都是LISTS。 提前致谢
答案 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)