我被困住了。
我是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,)
任何人都知道如何获得第二个版本?!
感谢您的帮助。
答案 0 :(得分:2)
您需要在>>
中指定axis
。在您的情况下np.sum
是axis
,因为您想要添加实际上是行的所有子数组。所以,试试这个:
0
答案 1 :(得分:0)
根据我的理解,您正在尝试将2D阵列转换为1D阵列。如果是这样,您可以使用ndarray.flatten
。
如果你的意思是列表,你可以使用列表理解:
x = [item for sub_list in whole_list for item in sub_list]