簡體   English   中英

將一對特定格式的numpy數組追加到第3個數組

[英]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) 我們稱它們為X1Y1 然后,下一對將是X2Y2 ,然后是X3Y3np.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.concatenatevstackhstack很難實現,因為它們似乎無法執行第一個實例,即將第一個對附加到最初為空的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.

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