NumPy数组中给定索引处的值取决于另一个NumPy数组中较高索引处的值

i7uaboj4  于 2022-11-24  发布在  其他
关注(0)|答案(1)|浏览(98)

我有两个一维NumPy数组x = [x[0],x[1],...,x[n-1]]和y = [y[0],y[1],...,y[n-1]]。数组x是已知的,我需要确定数组y的值。对于np.arange(n)中的每个索引,y[index]的值取决于x[index]和x[index + 1:我的代码是:

import numpy as np

n = 5
q = 0.5
x = np.array([1, 2, 0, 1, 0])
y = np.empty(n, dtype=int)

for index in np.arange(n):
  if (x[index] != 0) and (np.any(x[index + 1:] == 0)):
    y[index] = np.random.choice([0,1], 1, p=(1-q, q))
  else:
    y[index] = 0

print(y)

for循环的问题是,在我的实验中,n的大小可能会变得非常大。有没有什么向量化的方法可以做到这一点?

5vf7fwbs

5vf7fwbs1#

1.随机生成具有完整形状的数组y
1.生成一个bool数组,指示在何处设置零。
1.使用np.where设置零。
试试这个

import numpy as np

n = 5
q = 0.5
x = np.array([1, 2, 0, 1, 0])

y = np.random.choice([0, 1], n, p=(1-q, q))
condition = (x != 0) & (x[::-1].cumprod() == 0)[::-1] # equivalent to the posted one
y = np.where(condition, y, 0)

相关问题