我陷入了for循环问题。
我有一个信号作为一个数组,我把它分成多个时代。
for i in range(0,epochs):
Rxy[i], freqs_xy[i] = mlab.csd(x2[i], y2[i], NFFT=nfft, Fs=sfreq)
我是第二次为y信号做这个。 假设我的信号x的形状为(100),那么我的2个时期的分裂数组应该具有(2,50)的形式。
现在我想在for循环中使用一个函数来计算我的拆分数组的每个段的每个值的值......类似于:
cron -f
所以我会得到一个Rxy数组,如(2,50)
希望你得到我想做的事。
问候, 丹尼尔
答案 0 :(得分:0)
要将Rxy
构建为数组,请先为数组分配空间:
Rxy = np.empty_like(x2)
freqs_xy = np.empty_like(x2)
然后您可以使用循环填写Rxy
行:
for i in range(2):
Rxy[i], freqs_xy[i] = mlab.csd(x2[i], y2[i], NFFT=nfft, Fs=sfreq)
顺便说一句,np.array_split(x,epochs)
会返回数组的列表。那不是
与形状(2, 50)
的数组相同。如果你能保证epochs
将x
拆分为相等长度的数组,您可以使用
x2 = x.reshape(2, -1)
代替。然后x2
将是形状(2, 50)
的数组。 reshape
更快
比array_split
更reshape
,因为array_split
只需更改属性
mlab.csd
必须将数据分配并复制到新数组中。无论如何,它是
通常更好地将数据保存在一个大数组而不是列表中的部分
数组,因为列表上的计算通常需要Python循环
使用NumPy时的性能祸害。当然,有时Python循环
无法避免,例如在调用UserOrganization newuserorg = new UserOrganization();
newuserorg.setCostCenter = "test";
newuserorg.setDepartment = "test";
...
...
时就是这种情况。