Python连接存储在列表中的不同大小的数组

时间:2016-01-14 17:14:20

标签: python list

我有一个清单' 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)) ] 

但它仍然返回原始列表并且不会连接存储的数组

2 个答案:

答案 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)

请注意,我将其更改为生成器表达式,因为您并不关心中间列表。