簡體   English   中英

數組中的numpy數組調整大小

[英]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.

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