【问题标题】:appending integers to empty NumPy array in Python将整数附加到 Python 中的空 NumPy 数组
【发布时间】:2013-03-22 07:58:27
【问题描述】:

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

【问题讨论】:

    标签: python arrays numpy append


    【解决方案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]))
    

    【讨论】:

    • @sebastian:以这种方式使用时,np.where() 返回一个单元素元组。 [0] 展开单个元素。
    • 我实施了更改。问题是,我的真实代码比上面的要复杂得多。我实际上需要在 for 循环中运行它,因为 if() 中的条件发生了变化(我编辑了问题)。
    • @sebastian: positions = np.hstack((positions, [i]))
    猜你喜欢
    • 2017-08-18
    • 2021-10-12
    • 1970-01-01
    • 1970-01-01
    • 2020-01-10
    • 2016-05-29
    • 1970-01-01
    • 2017-07-22
    • 2017-07-07
    相关资源
    最近更新 更多