【发布时间】:2017-02-28 14:12:56
【问题描述】:
我偶然发现了我不理解的 np.array 函数的一些行为。这段代码按我预期的方式工作:
arr1 = np.zeros((3,2))
arr2 = np.zeros((2,2))
np.array([arr1,arr2])
array([ array([[ 0., 0., 0.],
[ 0., 0., 0.],
[ 0., 0., 0.],
[ 0., 0., 0.]]),
array([[ 0., 0., 0.],
[ 0., 0., 0.],
[ 0., 0., 0.],
[ 0., 0., 0.],
[ 0., 0., 0.]])], dtype=object)
但是这段代码给了我一个错误:
arr1 = np.zeros((2,3))
arr2 = np.zeros((2,2))
np.array([arr1,arr2])
ValueError: 无法将输入数组从形状 (2,3) 广播到形状 (2)
为什么会有所不同,第一个维度的大小是否匹配?以及如何强制函数按照第一个示例中的方式运行?
【问题讨论】:
-
那么第二个示例中矩阵的预期形状是什么?
-
我希望与第一个相同的形状:
(2,) -
您可以使用以下 hack:
newarr=np.array([None, arr2, arr3, etc.]);newarr[0]=arr1 -
np.array([arr1,arr2], dtype=object)有效吗?编辑:没有