KCD*_*CDC 21 python arrays numpy concatenation
我试图连接4个数组,一个1D数组形状(78427,)和3个2D数组形状(78427,375/81/103).基本上这是4个阵列,具有78427个图像的特征,其中1D阵列每个图像只有1个值.
我尝试连接数组如下:
>>> print X_Cscores.shape
(78427, 375)
>>> print X_Mscores.shape
(78427, 81)
>>> print X_Tscores.shape
(78427, 103)
>>> print X_Yscores.shape
(78427,)
>>> np.concatenate((X_Cscores, X_Mscores, X_Tscores, X_Yscores), axis=1)
Run Code Online (Sandbox Code Playgroud)
这会导致以下错误:
回溯(最近调用最后一次):ValueError中的文件"",第1行:所有输入数组必须具有相同的维数
问题似乎是一维数组,但我不能真正理解为什么(它也有78427个值).我试图在连接它之前转置1D阵列,但这也没有用.
任何有关连接这些数组的正确方法的帮助将不胜感激!
Fal*_*lko 16
尝试连接X_Yscores[:, None](或者A[:, np.newaxis]像imaluengo建议的那样).这将创建一维数组中的二维数组.
例:
A = np.array([1, 2, 3])
print A.shape
print A[:, None].shape
Run Code Online (Sandbox Code Playgroud)
输出:
(3,)
(3,1)
Run Code Online (Sandbox Code Playgroud)
我不确定你是否想要这样的东西:
a = np.array( [ [1,2],[3,4] ] )
b = np.array( [ 5,6 ] )
c = a.ravel()
con = np.concatenate( (c,b ) )
array([1, 2, 3, 4, 5, 6])
Run Code Online (Sandbox Code Playgroud)
或者
np.column_stack( (a,b) )
array([[1, 2, 5],
[3, 4, 6]])
np.row_stack( (a,b) )
array([[1, 2],
[3, 4],
[5, 6]])
Run Code Online (Sandbox Code Playgroud)
你可以试试这个单行:
concat = numpy.hstack([a.reshape(dim,-1) for a in [Cscores, Mscores, Tscores, Yscores]])
Run Code Online (Sandbox Code Playgroud)
这里的"秘密"是使用一个轴上的已知公共维度重新整形,另一个轴使用-1,并自动匹配大小(如果需要,创建一个新轴).