1

我有一个存储信号信息的 NumPy 数组。在下面的代码中,为了方便起见,我刚刚从随机数中创建了它。现在我需要根据标准从信号数组中选择位置。再次,为简洁起见,我简化了以下标准。我试图通过将它们附加到一个名为位置的空 NumPy 数组来存储这些位置。我知道我对 NumPy.append() 函数的使用一定是错误的。我试图调试它,但我找不到错误。我究竟做错了什么?

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() 中的条件是一个数学表达式,如果满足条件,它将根据某些规则进行更改(在此处发布会很复杂)。

4

1 回答 1

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]))
于 2013-04-01T08:35:47.667 回答