2015-06-09 41 views
0

我被卡住了。將所有子陣加在一起

我是python的新手,需要一點幫助。

我想創建一個函數,喜歡數組形式,將所有我的子陣列添加在一起。不使用numpy.sum。

amp , amp2 = 1., 1. 
epochs = 2 
sfreq, duration = 10., 5 
times = np.arange(0, duration, 1/sfreq) 
nfft = 512 

x = amp * np.sin(2 * np.pi * 200 * times   ) + nse1 
y = amp2 * np.sin(2 * np.pi * 200 * times + np.pi/2 ) + nse2 

x2 = np.array_split(x,epochs) 
y2 = np.array_split(y,epochs) 

Rxy = np.zeros((epochs,nfft/2+1), dtype=np.complex) 
freqs_xy = np.zeros((epochs,nfft/2+1), dtype=np.complex) 
for i in range(epochs): 
    Rxy[i], freqs_xy = mlab.csd(x2[i], y2[i], NFFT=nfft, Fs=sfreq) 

    Rxy.shape 
    (epochs ,257) 

我想有,將增加的函數RXY [0] + RXY [1] + ... + RXY [曆元-1]

通過使用numpy.sum(RXY)它只給我一個價值。 但是使用Rxy [0] + Rxy [1]我把所有的值加在一起。並獲得大小

Rxy.size 
(257,) 

任何人都知道如何得到第二個版本?

感謝您的幫助。

+1

爲什麼不使用內置和? –

+0

這個Rxy對象是如何創建的? – aisbaa

+0

我不知道我得到你的問題..你問熱陣列總結?你能指定你想要的輸入和輸出嗎? –

回答

2

您需要np.sum指定axis。在你的情況axis0,因爲你想添加所有實際上是行的子數組。所以,試試這個:

np.sum(Rxy, axis=0) 
+0

非常感謝。有時候我會因樹木或情況而錯過木頭,這取決於愚蠢。 –

+1

請降級我的問題,這是可悲的。 –

0

從我的理解,你試圖把二維數組變成一維數組。如果是這樣,你可以使用ndarray.flatten

如果你的意思是列表的列表,你可以使用列表理解爲:

x = [item for sub_list in whole_list for item in sub_list] 
+0

對不起,你弄錯了。我的錯。 –