python - Numpy 将值添加(追加)到二维数组的每一行

标签 python numpy

我有形状为 (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/

相关文章:

python - numpy dtype int 类型错误

python - Networkx:pagerank、pagerank_numpy 和 pagerank_scipy 之间的区别?

python - django-getlist()

数据框上的 python pandas 条件总和,它在多列上分组

python - python setup.py 中平台的有效值是什么?

python - Numpy:将稀疏矩阵转换为 ndarray

python - x[x < 2] = 0 在 Python 中是什么意思?

python - Numpy 嵌套结构化数组引用

python - 在 sqlalchemy ilike 语句中使用变量

python - 查找二维 numpy 数组的相对最大值