簡體   English   中英

在數組數組中重塑數組

[英]Reshaping arrays in an array of arrays

我有40個陣列的陣列,每個陣列的形狀均為1x150。 有沒有辦法改變陣列的形狀,以便我有40個3x50陣列?

我不確定是否有一種方法可以使用np.reshape並只在一行中執行,有嗎?

這真的是np.arrays array ,還是這些數組的列表? 如果是數組,它的形狀和dtype是什么?

如果它是列表或具有dtype=object數組,那么您必須遍歷所有項,並調整每個項的形狀。

 [a.reshape(3,50) for a in A]

如果您具有3d數組,則其形狀可能是(40, 1, 150)

 A.reshape(40, 3, 50)

由於“對象”數組中的項目可以是任何內容-字符串,數組,列表,字典-不能一次“ reshape地應用於所有對象。 即使它們都是數組,它們也可以具有不同的尺寸。 實際上,通常就是如何生成數組的數組。

In [5]: np.array([[1,2,3],[2,3]])
Out[5]: array([[1, 2, 3], [2, 3]], dtype=object)

您必須采取特殊的步驟來構造具有相同形狀的項目的對象數組。 np.array嘗試構造它可以的最高維數組。

In [7]: A=np.empty((2,),dtype=object)
In [8]: A[0] = np.array([1,2,3])
In [9]: A[1] = np.array([4,5,6])
In [10]: A
Out[10]: array([array([1, 2, 3]), array([4, 5, 6])], dtype=object)

看待它的另一種方式: reshape只是更改數組的屬性。 它對數據沒有任何作用。 對於3d數組,只有一個shape值和一個數據塊。

但是在對象數組中,每個對象都有自己的shapedata

為了重塑包含numpy-arrays的numpy-array,我發現此貢獻很有幫助-您可以首先使用b=np.hstack(array_of_arrays)創建一個扁平的一維numpy-array,然后重塑b

暫無
暫無

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

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