我生成numpy的阵列序列如下:如何有效地vstack大序列的numpy数组块?
def chunker(seq, size):
return (seq[pos:pos + size] for pos in range(0, len(seq), size))
for i in chunker(X,10000):
e = function(i)
print('new marix',e)
new matrix (10000, 3208)
new matrix (10000, 3208)
new matrix (10000, 3208)
new matrix (10000, 3208)
new matrix (10000, 3208)
new matrix (10000, 3208)
new matrix (10000, 3208)
new matrix (10000, 3208)
...
new matrix (10000, 3208)
我想vstack上述n
矩阵中的单独一个。因此,我试过如下:
X = np.vstack(e)
然而,当我打印X
我又收到:
new matrix (10000, 3208)
new matrix (10000, 3208)
new matrix (10000, 3208)
new matrix (10000, 3208)
new matrix (10000, 3208)
new matrix (10000, 3208)
new matrix (10000, 3208)
new matrix (10000, 3208)
...
new matrix (10000, 3208)
取而代之的是新的vstacked单个矩阵。任何想法如何vstack这个numpy数组序列?
更新
从杰德沃德的答案我编辑我的代码如下:
进口numpy的为NP
def chunker(seq, size):
return (seq[pos:pos + size] for pos in range(0, len(seq), size))
for (r,i) in enumerate(chunker(X,10000)):
e = function(i)
print('new matrix',e)
X[r,:] = e
print(X)
'vstack'的输入应该是一个匹配最后一个维度的数组列表。 'e'看起来不像那样。您需要将个人'e'收集到列表中。 – hpaulj
在你的循环中,“e”的形状是什么? 'X'的? 'X [R,:]'? – hpaulj
X.shape =(878049,3208),e.shape =(10000,3208),merged [r,:]。shape =(3208,)。核心似乎已经死亡。它会自动重启。感谢@hpaulj的帮助!我也越来越:'核心似乎已经死亡。它会自动重新启动.' –