【问题标题】:ValueError: all the input arrays must have same number of dimensions . Stacking vectorsValueError: 所有输入数组必须具有相同的维数。堆叠向量
【发布时间】:2018-05-18 01:57:30
【问题描述】:

我有三个要附加的数组。 这是我的向量示例:

V1=array([ 0.03317591, -0.01624349, -0.01151019])
V2=array([[ 0.06865846, -0.00223798],
       [-0.02872752, -0.00369226],
       [-0.02063454, -0.00231726]])
V3=
array([[ 0.01160267,  0.12610824, -0.01634712,  0.01217519],
       [-0.00727594, -0.0501376 , -0.01641992,  0.00933081],
       [-0.05305551,  0.01195211,  0.04031831, -0.04476306]])

为了附加三个向量并获得一个向量,我做了以下操作:

new_v=np.hstack((V1,V2,V3))

我收到以下错误:

ValueError: all the input arrays must have same number of dimensions

但是:

 V2_V3=np.hstack((V2,V3))

有效,它返回:

array([[ 0.06865846, -0.00223798,  0.01160267,  0.12610824, -0.01634712,
         0.01217519],
       [-0.02872752, -0.00369226, -0.00727594, -0.0501376 , -0.01641992,
         0.00933081],
       [-0.02063454, -0.00231726, -0.05305551,  0.01195211,  0.04031831,
        -0.04476306]])

我想得到的是以下内容:

array([[0.03317591, 0.06865846, -0.00223798,  0.01160267,  0.12610824, -0.01634712,
         0.01217519],
       [-0.01624349, -0.02872752, -0.00369226, -0.00727594, -0.0501376 , -0.01641992,
         0.00933081],
       [-0.01151019, -0.02063454, -0.00231726, -0.05305551,  0.01195211,  0.04031831,
        -0.04476306]])

V1 有什么问题?

【问题讨论】:

    标签: python numpy stack append


    【解决方案1】:

    要使用np.hstack,我们需要将V1 转换为2D,使得三个输入数组沿第一轴的长度相同 -

    np.hstack((V1[:,None],V2,V3))
    

    作为替代方案,我们可以使用np.column_stacknp.concatenate 沿第二个轴在2D 转换为V1 以及其他人或np.c_ -

    np.column_stack((V1,V2,V3))
    np.concatenate([V1[:,None],V2,V3],axis=1)
    np.c_[V1,V2,V3]
    

    【讨论】:

      【解决方案2】:

      V1 没有什么问题,只是它是一维的,而 V2 和 V3 是二维的。根据docs for hstack,除了第二个轴之外,所有输入数组都必须具有相同的形状。您的代码中的 V1 没有第二个轴。

      在调用 hstack 期间,您可以轻松地向 V1 添加一个空的第二个轴,如下所示:

      new_v = hstack((V1[:, None], V2, V3))
      

      这应该会达到您想要的输出。

      注意:V1[:, None] 位是 NumPy 可用于向数组添加空维度的三种方法之一。另外两个是V1[:, np.newaxis] 和函数版本np.expand_dims(V1, axis=1)

      您可以在该行代码中使用其中任何一个来代替V1[:, None],它会起作用。查看docs for numpy.expand_dims 了解更多关于向数组添加维度的信息。

      【讨论】:

        猜你喜欢
        • 2016-12-15
        • 1970-01-01
        • 2019-09-22
        • 2018-06-12
        • 2017-06-18
        • 2018-06-23
        • 1970-01-01
        • 2017-07-13
        • 1970-01-01
        相关资源
        最近更新 更多