python - 为具有指定列的每一行分配值到一个 numpy 数组

标签 python arrays numpy

我有一个矩阵 foo,它有 n 行和 m 列。示例:

>>> import numpy as np
>>> foo = np.arange(6).reshape(3, 2) # n=3 and m=2 in our example
>>> print(foo)
array([[0, 1],
       [2, 3],
       [4, 5]])

我有一个包含 n 元素的数组 bar。示例:

>>> bar = np.array([9, 8, 7])

我有一个长度为 n 的列表 ind,其中包含列索引。示例:

>>> ind = np.array([0, 0, 1], dtype='i')

我想使用列索引 indbar 的值分配给矩阵 foo。我想每行都这样做。假设执行此操作的函数称为 assign_function,我的输出将如下所示:

>>> assign_function(ind, bar, foo)
>>> print(foo)
array([[9, 1],
       [8, 3],
       [4, 7]])

有没有 pythonic 的方法来做到这一点?

最佳答案

由于 ind 处理第一个轴,您只需要第零个轴的索引器。您可以使用 np.arange 非常简单地完成此操作:

foo[np.arange(len(foo)), ind] = bar
foo

array([[9, 1],
       [8, 3],
       [4, 7]])

关于python - 为具有指定列的每一行分配值到一个 numpy 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47891168/

相关文章:

python - 为什么我的 argparse 不显示默认值?

python - 如何在 numpy 中设置最大输出宽度?

python - 使用 pandas 进行矩阵数学计算

python - 对于列表中的每个点,计算到所有其他点的平均距离

python - Pandas 将 float append 到 for 循环中的列

Python theano.scan taps 参数

python - cv2.CalibrateCamera中retval返回值的含义

c# - 如何在没有 C# 类的情况下查找子列表的索引

arrays - 多样化排序的算法

php - 用来自一个指定 MySQL 字段的数据填充数组