将(numpy)值加到(附加)二维数组的每一行

时间:2018-10-17 23:03:42

标签: python numpy

我有形状为(x,14)的浮点数的numpy数组,我想在每个“行”的末尾增加一个值(向每行不同的值),以便最终结果具有形状(x, 15)。

我们可以假设我在某些列表中有这些值,因此也定义了一部分问题。

如何使用numpy函数?

1 个答案:

答案 0 :(得分:1)

定义2d数组和列表:

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,)

要将alistarr连接起来,它需要具有相同数量的尺寸和相同数量的“行”。我们可以通过添加带有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_stack的作用相同,请注意每个输入至少为2d(建议阅读其代码。)从长远来看,您应该对尺寸和形状足够熟悉,可以简单地做到这一点concatenate

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