[英]Appending a pair of numpy arrays in a specific format to a 3rd array
我正在從數據集中成對提取數據點。 一對包含2個numpy數組,每個數組的形狀為(3, 30, 30)
3,30,30 (3, 30, 30)
。 我們稱它們為X1
和Y1
。 然后,下一對將是X2
和Y2
,然后是X3
和Y3
, np.append
。我不知道總共有多少對,所以我必須使用類似np.append
東西。
所以我想要類似的東西:
>>X1, Y1 = extract_X_and_Y_from_data(data)
>>pair1 = np.array([X1, Y1])
>>pair1.shape
(2, 3, 30, 30)
>>list_of_pairs.some_append_function(pair1)
>>list_of_pairs.shape
(1, 2, 3, 30, 30)
>>X2, Y2 = extract_X_and_Y_from_data(data)
>>pair2 = np.array([X2, Y2])
>>list_of_pairs.some_append_function(pair2)
>>list_of_pairs.shape
(2, 2, 3, 30, 30)
...
>>X50, Y50 = extract_X_and_Y_from_data(data)
>>pair50 = np.array([X50, Y50])
>>list_of_pairs.some_append_function(pair50)
>>list_of_pairs.shape
(50, 2, 3, 30, 30)
總而言之,我需要最終的list_of_pairs為形狀為numpy的數組(no_of_pairs, 2, 3, 30, 30)
。 np.append
一直給我(no_of_pairs, 2)
,我不太確定為什么。
注意: np.concatenate
, vstack
或hstack
很難實現,因為它們似乎無法執行第一個實例,即將第一個對附加到最初為空的list_of_pairs
。
謝謝!
附有清單
list_of_pairs = [] # real list
for data in database:
X1, Y1 = extract_X_and_Y_from_data(data)
pair1 = np.array([X1, Y1])
list_of_pairs.some_append_function(pair1)
array5d = np.array(list_of_pairs)
>> array5d.shape
(50, 2, 3, 30, 30)
appending
到列表相對較快,因為它僅向列表添加了一個指針。 您的pair
陣列保留在內存中。
np.array(alist)
構建一個新數組,將組件連接到一個新維度(與np.array([[1,2,3],[4,5,6]])
)
有一個新函數np.stack
,它使您可以更好地控制新尺寸。 所有的stack
函數最終都會調用np.concatenate
。 其中包括名稱不正確(且經常被濫用)的np.append
。 concatenate
需要匹配的尺寸(在連接方向上)。 各種stacks
僅調整尺寸的總數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.