Python Numpy向二维数组的每一行添加(追加)值
我有一个形状为(x,14)的浮点数组,我想在每个“行”的末尾再添加一个值(每行的值不同),这样最终结果就是形状(x,15) 我们可以假设我在某个列表中有这些值,所以问题的一部分也被定义了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],
如何使用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)]