array1.shape 给出 (180, )array2.shape 给出 (180, 1)

这两者有什么区别?
由于这种差异,我无法将它们堆叠在一起

np.vstack((array2, array1))

我应该对 array1 形状进行哪些更改,以便我可以将它们堆叠起来?

最佳答案

让我们定义一些数组:

>>> x = np.zeros((4, 1))
>>> y = np.zeros((4))

按原样,这些数组无法堆叠:
>>> np.vstack((x, y))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python3/dist-packages/numpy/core/shape_base.py", line 230, in vstack
    return _nx.concatenate([atleast_2d(_m) for _m in tup], 0)
ValueError: all the input array dimensions except for the concatenation axis must match exactly

但是,通过简单的更改,它们将堆叠:
>>> np.vstack((x, y[:, None]))
array([[ 0.],
       [ 0.],
       [ 0.],
       [ 0.],
       [ 0.],
       [ 0.],
       [ 0.],
       [ 0.]])

或者:
>>> np.vstack((x[:, 0], y))
array([[ 0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.]])

关于python - 使用 vstack 在 numpy 中堆叠数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39462433/

10-12 18:45