[英]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
值和一個數據塊。
但是在對象數組中,每個對象都有自己的shape
和data
。
為了重塑包含numpy-arrays的numpy-array,我發現此貢獻很有幫助-您可以首先使用b=np.hstack(array_of_arrays)
創建一個扁平的一維numpy-array,然后重塑b
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.