附加整数以在Python中清空NumPy数组

时间:2013-04-01 08:31:45

标签: python arrays numpy append

我有一个存储信号信息的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()中的条件将被更改的数学表达式根据某些规则(如果满足条件,这将是复杂的发布方式)。

1 个答案:

答案 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]))