Numpy 发行附加ndarray和#x27;不同形状的玩具

Numpy 发行附加ndarray和#x27;不同形状的玩具,numpy,numpy-ndarray,Numpy,Numpy Ndarray,我有一个带有shape(25,2)的numpyndarray,我正试图附加一个具有shape(2,)的值 我尝试过使用append方法,但到目前为止没有成功 有什么想法吗? 谢谢 对于以这种方式附加到工作,您需要满足中指定的两个条件 附加的对象必须具有相同的维度。它的形状应该是(1,2) 必须指定要连接的轴,否则numpy将展平阵列 例如: import numpy x = numpy.ones((3, 2)) y = [[1, 2]] numpy.append(x, y, axis=0) 结

我有一个带有shape(25,2)的numpy
ndarray
,我正试图附加一个具有shape(2,)的值

我尝试过使用
append
方法,但到目前为止没有成功

有什么想法吗?
谢谢

对于以这种方式附加到工作,您需要满足中指定的两个条件

  • 附加的对象必须具有相同的维度。它的形状应该是
    (1,2)
  • 必须指定要连接的轴,否则numpy将展平阵列
  • 例如:

    import numpy
    x = numpy.ones((3, 2))
    y = [[1, 2]]
    numpy.append(x, y, axis=0)
    
    结果:

    array([[ 1.,  1.],
           [ 1.,  1.],
           [ 1.,  1.],
           [ 1.,  2.]])
    

    使用
    append方法
    ,您遇到了什么样的错误“运气不好”和“没用”一样是个糟糕的形容词。在适当的问题中,您应该显示预期值以及错误。然而,这个话题经常出现,我们可以做出很好的猜测

    In [336]: a = np.ones((3,2),int)
    In [337]: b = np.zeros((2,),int)
    
    但首先我要学究式地尝试一种
    附加方法

    In [338]: a.append(b)
    ---------------------------------------------------------------------------
    AttributeError                            Traceback (most recent call last)
    <ipython-input-338-d6231792f85d> in <module>()
    ----> 1 a.append(b)
    
    AttributeError: 'numpy.ndarray' object has no attribute 'append'
    
    在某种程度上,这是有效的。但如果我阅读文档并提供axis参数:

    In [341]: np.append(a,b, axis=0)
    ...
    -> 5166     return concatenate((arr, values), axis=axis)
    ValueError: all the input arrays must have same number of dimensions
    
    现在它只是调用
    np.concatenate
    ,将这两个参数变成一个列表

    如果这是您遇到的错误,并且不理解它,您可能需要查看有关尺寸和形状的基本numpy文档

    a
    是2d,
    b
    是1d。为了连接,我们需要重塑
    b
    ,使其成为
    (1,2)
    ,一种与
    a
    的(3,2)相兼容的形状。有几种方法可以做到这一点:

    In [342]: np.concatenate((a, b.reshape(1,2)), axis=0)
    Out[342]: 
    array([[1, 1],
           [1, 1],
           [1, 1],
           [0, 0]])
    

    远离
    np.append
    ;对于许多初学者来说,它太让人困惑了,并且没有给基础添加任何有意义的内容
    concatenate

    您可以使用
    np.vstack
    。它不能正常工作,所以您必须重新分配:
    a=np.vstack([a,b])
    谢谢!!!“np.连接((a,b.重塑(1,2)),轴=0)”是完美的!
    In [342]: np.concatenate((a, b.reshape(1,2)), axis=0)
    Out[342]: 
    array([[1, 1],
           [1, 1],
           [1, 1],
           [0, 0]])