import numpy as np
for h in range(10):
try:
array = np.array([np.zeros((h, 4)), np.zeros((3, h))], dtype=object)
except ValueError:
print(f'Value Error for h={h} only.')
在上面的代码中,ValueError
仅发生在h=3
。这似乎是任意的。
全部错误是,
File "path/to/arr.py", line 4, in <module>
array = np.array([np.zeros((h, 4)), np.zeros((3, h))], dtype=object)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ValueError: could not broadcast input array from shape (3,4) into shape (3,)
我该如何避免这种情况以及为什么会发生这种情况?
numpy
,它会尝试将它们组合成一个常规的多维数组(如果可能)。h=3
两个数组恰好具有相同的行数 。numpy
认为您可能想要堆叠这些数组,但是它们的列大小 4 和 3 不匹配,导致ValueError
。numpy
不会合并数组。