【问题标题】:Populate predefined numpy array with arrays as columns使用数组作为列填充预定义的 numpy 数组
【发布时间】:2013-06-02 08:12:35
【问题描述】:

我无法通过阅读 Python 文档和 stackoverflow 弄清楚。可能我想错了方向..

假设我有一个预定义的 2D Numpy 数组,如下所示:

a = np.zeros(shape=(3,2)) 
print a
array([[ 0.,  0.],
       [ 0.,  0.],
       [ 0.,  0.]])

现在我想用一维数据数组(一个接一个)填充这个二维数组的每一列,如下所示:

b = np.array([1,2,3])

# Some code, that I just can't figure out. I've studied insert, column_stack, 
# h_stack, append. Nothing seems to do what I need

print a
array([[ 1.,  0.],
       [ 2.,  0.],
       [ 3.,  0.]])

c = np.array([4,5,6])

# Some code, that I just can't figure out. I've studied insert, column_stack, 
# h_stack, append. Nothing seems to do what I need

print a
array([[ 1.,  4.],
       [ 2.,  5.],
       [ 3.,  6.]])

任何建议将不胜感激!

【问题讨论】:

    标签: python arrays numpy populate


    【解决方案1】:

    您可以使用切片分配给列:

    >>> a[:,0] = b
    >>> a
    array([[ 1.,  0.],
           [ 2.,  0.],
           [ 3.,  0.]])
    

    要一次全部分配而不是一次分配一个,请使用np.column_stack

    >>> np.column_stack((b, c))
    array([[1, 4],
           [2, 5],
           [3, 6]])
    

    如果您需要将它放在同一个数组中,而不仅仅是具有相同的名称,您可以将其分配给包含整个矩阵的切片(这在列表中很常见):

    >>> a[:] = np.column_stack((b, c))
    >>> a
    array([[ 1.,  4.],
           [ 2.,  5.],
           [ 3.,  6.]])
    

    【讨论】:

    • 真正有用的答案。谢谢
    猜你喜欢
    • 1970-01-01
    • 2013-12-29
    • 2018-05-07
    • 2017-10-24
    • 2016-11-06
    • 2023-03-28
    • 2015-03-09
    • 2013-09-09
    • 2016-02-25
    相关资源
    最近更新 更多