[英]Make a multidimensional numpy array
我需要去除信號的直流部分。 為此,我有以下代碼:
def removeDC(seq):
mean_seq = np.mean(seq)
seq_mod = np.array([])
for sample in seq:
seq_mod = np.append(seq_mod,sample - mean_seq)
return seq_mod
但我的數據具有 (31250, 5) 的尺寸/形狀,我希望它從每個通道中移除 DC。 這是我的嘗試,但我不確定如何將正確的值添加到正確的頻道索引
def removeDC(seq): #removing dc from signal, slik at amplituden varierer rundt 0
for i in range(0,seq.shape[1])):
mean_seq = np.mean(seq[:,i])
seq_mod = np.array([]) #need seq.shape[1] dimensions, problem here
for sample in seq[:,i]: #problem here
seq_mod[,i] = np.append(seq_mod, sample - mean_seq)#problem here
return seq_mod
解決問題的另一種方法是:您有二維數據。 讓我們稱第一個“行”和第二個“列”(這是標准詞匯,但在您的應用程序中它們可能是“時間”和“通道”)。 您有 31250 行和 5 列。 你想計算每列的平均值,給你一個包含 5 個值的向量。 然后,對於 31250 行中的每一行,您要刪除 5 個平均值。 我們開工吧!
data = np.random.random(size=(31250,5)) # just some random values...
means = data.mean(axis=0) #compute mean along the columns
data = data - means
最后一行有效,因為 numpy 用向量means
的長度 5 標識您的 5 列。
在您的特定情況下,您可能希望將它們稱為
signals = np.random.random(size=(31250,5))
dc_offset = signals.mean(axis=0)
centered_signals = signals - dc_offset
PS檢查廣播的概念。 它是編寫可管理的 numpy 代碼的關鍵。 見https://numpy.org/doc/stable/user/basics.broadcasting.html
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.