作为代码的输入,我需要一个'ndarray'(称为C),其形状为:((4,N),(4,N))。所以,如果N = 3,我想我可以这样构造它:
import numpy as np
A=np.array([[1, 2,3], [0.1, 0.2,0.3],[0.4,0.5,0.6],[0.7,0.8,0.9]])
B=np.array([[4,5,6], [0.4, 0.5,0.6],[0.7,0.8,0.9],[0.7,0.8,1]])
因此,如何将A和B组合起来以得到形状为((4,3),(4,3))的C(st C [0]也应为A,而C [1]应为B)?
我尝试过:
C=np.concatenate(([A], [B]), axis=0)
,但是得到的C.shape是(2,4,3)而不是((4,3),(4,3))。然后我天真地尝试重塑C:
C.reshape((4,3),(4,3))
但是我收到一条错误消息。
很抱歉,如果这个问题太基本了,我刚刚开始使用python。
最好
史蒂芬
答案 0 :(得分:1)
为了执行您要的操作,如果您了解numpy ndarrays的工作原理,则更为简单。在您列出的示例中,您可以使用以下形状在3维中精确地创建该类型的数组:
numpy.zeros((4,N,2));
这将创建具有您想要的形状的数组。 documentation page on numpy array creation有很多有关如何使用它的重要信息。
但是,如果要合并两个数组,有很多方法可以做到。
stacked0=numpy.stack(A,B) # Stack the arrays along a new axis (a 3rd axis in this case)
stacked0.shape # outputs (2,4,3) in the example arrays.
这将创建一个新轴并沿其合并,在这种情况下,默认轴替换第一个轴(axis = 0),并将其余轴向下移动。这仅在以后需要索引以及高级应用程序中某些固定性能时才重要。作为初学者,最重要的事情是了解您要沿哪个轴合并。
stacked1=numpy.stack([A,B],axis=1) # Replaces the second axis to stack
stacked1.shape # (4,2,3)
stacked2=numpy.stack([A,B],axis=2) # Appends a third axis
stacked2.shape # (4,3,2)
您还可以沿现有轴将它们连接起来。
concated0 = numpy.concatenate([A,B],axis=0) # merges them along the first axis
concated0.shape # (8,3)
concated1 = numpy.concatenate([A,B],axis=1)
concated1.shape # (4,6)
有关如何重新排列阵列的更多选项,请参见array manimpulations docs。