在指定的索引列表上将数组设置为零

Setting an array to zero on a specified list of indices

f_1(a,b) 形状的数组,f_2 为 (2*a,b) 形状的数组。如果我们将数组限制在偶数行,f_2 等于 f_1。我想将 f_2 设置为零到 f_1 为零的任何地方。我尝试了以下方法:

I = np.argwhere(f_1 == 0)

for x in I:
    x[0] = 2*x[0]

f_2[I] = 0

但是 LA.norm(f_2) 结果是 0.0 所以这种方法显然行不通。

为什么不简单地做这样的事情呢?

for x in I:
    f_2[2*x[0]][x[1]] = 0

您可以将第一个维度的索引乘以二:

<b>i,j</b> = np.where(f_1 == 0)
f_2[<b>2*i</b>,j] = 0

您可以使用切片到 select 偶数列和布尔索引来设置零。

f_2[::2][f_1==0]=0