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)

編集:

if() の条件は、条件が満たされた場合に何らかのルールに従って変更される数式であるため、 for loopで実行するには実際にこれが必要です (ここに投稿するのは複雑です)。

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 に答える