簡體   English   中英

新數組的總大小必須保持不變

[英]total size of new array must be unchanged

我有兩個數組x1和x2,兩個都是1 * 14陣列我試圖拉上它們然后執行重塑。

代碼如下;

x1

Out [122]:數組([1,2,3,1,5,6,5,5,6,7,8,9,7,9])

x2

Out [123]:數組([1,3,2,2,8,6,7,6,7,1,2,1,1,3])

X = np.array(zip(x1, x2)).reshape(2, len(x1))

ValueErrorTraceback(最近一次調用last)in()----> 1 X = np.array(zip(x1,x2))。reshape(2,len(x1))

ValueError:新數組的總大小必須保持不變

我假設您使用的是Python 3,其結果是帶有zip對象的數組。

您應該在壓縮物品上調用list

X = np.array(list(zip(x1, x2))).reshape(2, len(x1))
#            ^^^^
print(X)
# [[1 1 2 3 3 2 1 2 5 8 6 6 5 7]
#  [5 6 6 7 7 1 8 2 9 1 7 1 9 3]]

在Python 2中, zip返回一個列表而不是像Python 3那樣的迭代器,並且您以前的代碼可以正常工作。

你使用的是Python 3,所以zip是懶惰的。

>>> np.array(zip(x1,x2))
array(<zip object at 0x7f76d0befe88>, dtype=object)

你需要迭代它:

>>> np.array(list(zip(x1, x2))).reshape(2, len(x1))
array([[1, 1, 2, 3, 3, 2, 1, 2, 5, 8, 6, 6, 5, 7],
       [5, 6, 6, 7, 7, 1, 8, 2, 9, 1, 7, 1, 9, 3]])

np.array沒有將zip創建的生成器識別為可迭代的。 如果您先強制轉換為列表,它可以正常工作:

from array import array
import numpy as np
x1 = array('i', [1, 2, 3, 1, 5, 6, 5, 5, 6, 7, 8, 9, 7, 9])
x2 = array('i', [1, 3, 2, 2, 8, 6, 7, 6, 7, 1, 2, 1, 1, 3])
print(np.array(list(zip(x1, x2))).reshape(2, len(x1)))

[[1 1 2 3 3 2 1 2 5 8 6 6 5 7]
 [5 6 6 7 7 1 8 2 9 1 7 1 9 3]]

暫無
暫無

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

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