[英]numpy array in array resize
說我做了一個奇怪的小數組:
>>> a = np.array([[[1,2,3],4],[[4,5,6],5]])
>>> a
array([[[1, 2, 3], 4],
[[4, 5, 6], 5]], dtype=object)
然后將第一列作為切片:
>>> b = a[:,0]
>>> b
array([[1, 2, 3], [4, 5, 6]], dtype=object)
>>> b.shape
(2,)
假設我現在想要重塑b以使其形狀為(2,3):
>>> b.reshape((-1,3))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: total size of new array must be unchanged
我認為numpy將b中的每個數組視為一個對象而不是一個數組本身。 問題是,是否有一種很好的方法來進行所需的調整大小?
在您的特定示例中,您可以使用numpy.vstack:
import numpy as np
a = np.array([[[1,2,3],4],[[4,5,6],5]])
b = a[:,0]
c = np.vstack(b)
print c.shape # (2,3)
編輯:既然你的數組a
是不是一個真正的矩陣,但陣列的集合(如指出的WIM),你也可以做到以下幾點:
b = np.array([ line for line in a[:,0]])
print b.shape #(2,3)
您無法在適當的位置更改b
的形狀,但可以使用np.vstack(b)
創建所需形狀的副本。 我想你可能已經知道了這么多。
需要注意的是你沒有做在第一列的數組a
,如果檢查type(a[0,0])
你會發現,你實際上有一個列表存在。 即你的切片a[:,0]
實際上是兩個列表對象的列向量,它本身不是(並且從來沒有)一個數組。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.