簡體   English   中英

從10個不同的(104,)維numpy.ndarray創建一個(104,1,10)維numpy.ndarray

[英]creating a (104,1,10) dimensional numpy.ndarray from 10 different (104,) dimensional numpy.ndarray

我有10個不同的(104,)形狀(一維中有104個元素)numpy ndarray。 我需要將它們全部堆疊在一起以形成(104,1,10)形狀的數組。 預期的輸出是這樣的https://i.imgur.com/HDSBLx5.jpg

我編寫了以下代碼,這當然會給我帶來錯誤,因為“ rulesetArray”維在第一次迭代后不匹配。

valueerror:所有輸入數組必須具有相同的形狀

import numpy as np

rulesetArray=np.zeros((104,1))
listString=['100010001.....','1010101....',,,,,,,,,'100010001.....'] # each element in listString is 104 in length and has 10 elements
for i in listString:
   npArray=np.array(list(i),dtype=int) # outputs (104,) size npArray
   npArray=npArray.reshape(104,1) # converts npArray to (104,1) shape
   rulesetArray= np.stack([rulesetArray,npArray)

我想您正在尋找np.dstack()

沿深度方向(沿第三軸)按順序堆疊數組。 dstack文檔

碼:

import numpy as np

a = np.zeros((5, 1))
b = np.ones((5, 1))

print('a:', a, a.shape, 'b:', b, b.shape, sep='\n')

stacked_arr = np.dstack((a, b))

print('stacked:', stacked_arr, stacked_arr.shape, sep='\n')

輸出:

a:
[[0.]
 [0.]
 [0.]
 [0.]
 [0.]]
(5, 1)
b:
[[1.]
 [1.]
 [1.]
 [1.]
 [1.]]
(5, 1)
stacked:
[[[0. 1.]]

 [[0. 1.]]

 [[0. 1.]]

 [[0. 1.]]

 [[0. 1.]]]
(5, 1, 2)
In [116]: alist = [np.arange(10) for _ in range(5)]                                                          
In [117]: arr = np.stack(alist, axis=1)                                                                      
In [118]: arr.shape                                                                                          
Out[118]: (10, 5)
In [119]: arr.reshape(10,1,5)                                                                                
Out[119]: 
array([[[0, 0, 0, 0, 0]],

       [[1, 1, 1, 1, 1]],

       [[2, 2, 2, 2, 2]],

       [[3, 3, 3, 3, 3]],

       [[4, 4, 4, 4, 4]],

       [[5, 5, 5, 5, 5]],

       [[6, 6, 6, 6, 6]],

       [[7, 7, 7, 7, 7]],

       [[8, 8, 8, 8, 8]],

       [[9, 9, 9, 9, 9]]])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM