【问题标题】:Replacing elements in an array from index array从索引数组替换数组中的元素
【发布时间】:2019-10-12 05:08:28
【问题描述】:

我有两个二维数组,例如:

A=array[[4,5,6],
        [0,7,8],
        [0,9,0]]

B = array[[11,12,13],
          [14,15,16],
          [17,18,19]]

在元素值为 0 的数组 A 中,我想将数组 B 中的相同值替换为 0,并将更改后的矩阵存储在新变量中并保留旧的 B 矩阵。

提前致谢。

【问题讨论】:

标签: python numpy numpy-ndarray


【解决方案1】:
import numpy as np
A=np.array([[4,5,6],
    [0,7,8],
    [0,9,0]])

B =np.array([[11,12,13],
      [14,15,16],
      [17,18,19]])
C = B.copy()
B[A == 0] = 0
C, B = B, C

行 B[A == 0] 基本上首先通过行 A == 0 获取数组 A 为 0 的所有值。它返回一个布尔数组,在数组 A 中值为 0 的位置为真。然后使用这个布尔数组来屏蔽数组 B,并将 0 分配给布尔值为 True 的索引。

【讨论】:

  • 不知道为什么你被否决了。这是尽可能简洁的内容...+1
  • 好吧,我没有投反对票,但我认为一个原因可能是您的代码中没有任何关于我的最后一行 +1 的解释。也许你可以添加一些解释
  • 但我也想保留旧的 B 矩阵。但这改变了它。
  • 我不明白。 “在元素值为 0 的数组 A 中,我想将数组 B 中的相同值替换为 0。”你想要一个具有这些值的新矩阵吗?
  • 是的,我想要具有这些值的新矩阵
猜你喜欢
  • 2017-08-06
  • 2017-11-10
  • 2015-01-03
  • 2019-06-23
  • 2020-02-08
  • 2020-06-04
  • 1970-01-01
  • 2022-01-02
  • 1970-01-01
相关资源
最近更新 更多