在Python中将零放在2D数组的给定索引值中

时间:2018-01-14 02:21:42

标签: python arrays numpy

我有阵列

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

B = np.array([
  [3,2,1],
  [9,2,8],
  [2,1,8]
])

执行a = np.argwhere(A > 4)给出了数组A中值大于4的位置/索引数组,即[[0 1], [0 2], [2 0]]

我需要使用a = np.argwhere(A > 4)中的这些索引/位置将数组B中的值替换为这些特定位置的零,即数组B现在应该

B = np.array([
  [3,0,0],
  [9,2,8],
  [0,1,8]
])

我很高兴得到任何帮助,我将非常感激。

谢谢你:)

2 个答案:

答案 0 :(得分:2)

应该如此简单:

B[A > 4] = 0

答案 1 :(得分:2)

一般情况下,请注意np.where 返回的索引意味着应用于numpy.ndarray个对象,因此您可以这样做:

B[np.where(A > 4)] = 0

一般情况下,我不会将np.where与这样的条件一起使用,我只是直接使用布尔掩码,就像John Zwinck的答案一样。但是理解你可以

可能很重要
>>> B[np.where(A > 4)] = 0
>>> B
array([[3, 0, 0],
       [9, 2, 8],
       [0, 1, 8]])