Python Numpy向二维数组的每一行添加(追加)值

Python Numpy向二维数组的每一行添加(追加)值,python,numpy,Python,Numpy,我有一个形状为(x,14)的浮点数组,我想在每个“行”的末尾再添加一个值(每行的值不同),这样最终结果就是形状(x,15) 我们可以假设我在某个列表中有这些值,所以问题的一部分也被定义了 如何使用numpy函数执行此操作?定义二维数组和列表: In [73]: arr = np.arange(12).reshape(4,3) In [74]: arr Out[74]: array([[ 0, 1, 2], [ 3, 4, 5], [ 6, 7, 8],

我有一个形状为(x,14)的浮点数组,我想在每个“行”的末尾再添加一个值(每行的值不同),这样最终结果就是形状(x,15)

我们可以假设我在某个列表中有这些值,所以问题的一部分也被定义了


如何使用numpy函数执行此操作?

定义二维数组和列表:

In [73]: arr = np.arange(12).reshape(4,3)
In [74]: arr
Out[74]: 
array([[ 0,  1,  2],
       [ 3,  4,  5],
       [ 6,  7,  8],
       [ 9, 10, 11]])
In [75]: alist = [10,11,12,13]
注意它们的形状:

In [76]: arr.shape
Out[76]: (4, 3)
In [77]: np.array(alist).shape
Out[77]: (4,)
要将
alist
连接到
arr
它需要具有相同数量的维度和相同数量的“行”。我们可以通过添加一个带有
None
习惯用法的维度来实现这一点:

In [78]: np.array(alist)[:,None].shape
Out[78]: (4, 1)
现在我们可以在第二个轴上连接:

In [79]: np.concatenate((arr, np.array(alist)[:,None]),axis=1)
Out[79]: 
array([[ 0,  1,  2, 10],
       [ 3,  4,  5, 11],
       [ 6,  7,  8, 12],
       [ 9, 10, 11, 13]])
column\u stack
也做同样的事情,注意每个输入至少是2d(我建议阅读它的代码)。从长远来看,您应该足够熟悉尺寸和形状,以便使用普通的
连接来实现这一点

In [81]: np.column_stack((arr, alist))
Out[81]: 
array([[ 0,  1,  2, 10],
       [ 3,  4,  5, 11],
       [ 6,  7,  8, 12],
       [ 9, 10, 11, 13]])
np.c
也可以做到这一点,但请注意使用[]而不是()。它巧妙地使用了索引符号,很方便,但可能令人困惑

np.c_[arr, alist]
np.r_['-1,2,0', arr, alist]  # for more clever obscurity 

您可以使用
np.c\u
np.column\u堆栈
。例如,
np.c.[np.ones((3,5)),range(3)]