我有一个清单' Z'用:
import numpy as np
z[0] = np.random.normal( 0, 1, ( 500, 20 ) )
z[1] = np.random.normal( 0, 1, ( 500, 30 ) )
列表中大约有100个数组。我只使用2号列表进行说明。存储的数组的维度0均为500
我想实现:
C = np.concatenate( ( z[0] , z[1] ),1)
我试过了:
z1 = [ np.concatenate( z[ii], 1 ) for ii in range(0,len(z)) ]
但它仍然返回原始列表并且不会连接存储的数组
答案 0 :(得分:4)
多维数组的连接在某种程度上是不明确的,没有指定要连接的轴。我假设您想要水平堆叠数组,因为两者的行数相同。最简单的电话是
stacked = np.hstack(Z)
将沿轴1连接。您可以找到文档here。
更一般地说,您也可以使用
stacked = np.concatenate(Z, axis=1)
也适用于高维数组。相应的文档为here。
答案 1 :(得分:1)
我对那些笨拙的东西感到困惑,但现在我明白了你在问什么。你只需了解你的列表理解。
而不是
z1 = [ np.concatenate( z[ii], 1 ) for ii in range(0,len(z)) ]
你想要
z1 = np.concatenate((z[ii] for ii in range(0, len(z)), 1)
请注意,我将其更改为生成器表达式,因为您并不关心中间列表。