【发布时间】:2019-05-22 01:11:28
【问题描述】:
这是一个代码。我做了一个列表,包括两个不同形状的 ndarray。
d = []
a = np.arange(183).reshape(3,61)
b = np.arange(51).reshape(3,17)
d = [a,b]
np.array(d)
错误如下。
File "C:\Program Files\JetBrains\PyCharm 2019.1.1\helpers\pydev\_pydev_imps\_pydev_execfile.py", line 18, in execfile
exec(compile(contents+"\n", file, 'exec'), glob, loc)
File "D:/dev/workspace/rl/test/npcopy.py", line 10, in <module>
np.array(d)
ValueError: could not broadcast input array from shape (3,61) into shape (3)
np.copy() 在两个 ndarray 的第一个 shpae 不同时起作用。但如果不是,它就不能像上面那样工作。
如果我如下更改此代码,
import numpy as np
d = []
a = np.arange(183).reshape(4, 61)
b = np.arange(51).reshape(3, 17)
d = [a,b]
np.array(d)
有效!!好奇怪!!
【问题讨论】:
-
为什么不只使用
a+b? -
试试:
np.concatenate(d, axis=1) -
它的预期。您不能将两个不同维度的矩阵组合成一个 n 维数组
-
您要寻找什么样的最终形状? 3x78 ?
-
那
d = [a,b]就够了,为什么np.array(d)呢?