将所有子阵列一起添加

时间:2015-06-09 08:52:35

标签: python loops numpy

我被困住了。

我是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 [epochs-1]

的函数

通过使用numpy.sum(Rxy),它只获得一个值。 但是使用Rxy [0] + Rxy [1]我将所有值加在一起。并获得大小

Rxy.size
(257,)

任何人都知道如何获得第二个版本?!

感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

您需要在>>中指定axis。在您的情况下np.sumaxis,因为您想要添加实际上是行的所有子数组。所以,试试这个:

0

答案 1 :(得分:0)

根据我的理解,您正在尝试将2D阵列转换为1D阵列。如果是这样,您可以使用ndarray.flatten

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

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