我有形状为 (x,14) 的 numpy float 组,我想在每个“行”的末尾添加一个值(每行不同的值),以便最终结果具有形状 (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_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
关于python - Numpy 将值添加(追加)到二维数组的每一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52864770/