【问题标题】:Modify different columns in each row of a 2D NumPy array修改 2D NumPy 数组每一行中的不同列
【发布时间】:2017-05-01 21:19:51
【问题描述】:

我有以下问题:

假设我有一个这样定义的数组:

A = np.array([[1,2,3],[4,5,6],[7,8,9]])

我想做的是利用 Numpy 多重索引并将几​​个元素设置为 0。为此,我正在创建一个向量:

indices_to_remove = [1, 2, 0]

我想表达的意思如下:

  1. 从第一行删除索引为“1”的元素
  2. 从第二行删除索引为“2”的元素
  3. 从第三行删除索引为“0”的元素

结果应该是数组[[1,0,3],[4,5,0],[0,8,9]]

我已经设法通过以下代码获取我想修改的元素的值:

values = np.diagonal(np.take(A, indices, axis=1))

但是,这不允许我修改它们。怎么解决?

【问题讨论】:

  • 你说得对,我就是这个意思。

标签: python arrays numpy indexing


【解决方案1】:

您可以使用 integer array indexing 分配这些零 -

A[np.arange(len(indices_to_remove)), indices_to_remove] = 0

示例运行 -

In [445]: A
Out[445]: 
array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 9]])

In [446]: indices_to_remove
Out[446]: [1, 2, 0]

In [447]: A[np.arange(len(indices_to_remove)), indices_to_remove] = 0

In [448]: A
Out[448]: 
array([[1, 0, 3],
       [4, 5, 0],
       [0, 8, 9]])

【讨论】:

    猜你喜欢
    • 2018-03-27
    • 2023-03-29
    • 2021-11-03
    • 1970-01-01
    • 2021-02-07
    • 2019-10-25
    • 2011-04-17
    • 2021-08-21
    • 2019-03-03
    相关资源
    最近更新 更多