我有一个存储信号信息的NumPy数组。在下面的代码中,我刚从随机数字创建它以方便起见。现在我需要根据标准从信号阵列中选择位置。为了简洁起见,我再次简化了以下标准。我试图通过将它们附加到称为位置的空NumPy数组来存储这些位置。我知道我使用NumPy.append()函数一定是错的。我试着调试它,但我找不到bug。我做错了什么?
import numpy as np
import numpy.random as random
signal = random.randint(1,10000,1000)
positions = np.array([],dtype = int)
for i in range(0,len(signal)):
if((signal[i] % 3 == 0) or (signal[i] % 5 == 0)):
print(i)
np.append(positions,i)
print(positions)
修改
我实际上需要在for循环中运行 ,因为if()中的条件是将被更改的数学表达式根据某些规则(如果满足条件,这将是复杂的发布方式)。
答案 0 :(得分:1)
您不需要显式循环:
positions = np.where((signal % 3 == 0) | (signal % 5 == 0))[0]
此处,(signal % 3 == 0) | (signal % 5 == 0)
评估signal
的每个元素的标准,np.where()
返回标准为真的索引。
如果您要在循环中附加到positions
,这是一种方法:
positions = np.hstack((positions, [i]))