在指定的索引列表上将数组设置为零
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
设 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