通过函数计算分割数组中的值来填充分割数组

时间:2015-05-29 11:58:50

标签: python arrays function for-loop signal-processing

我陷入了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)

希望你得到我想做的事。

问候, 丹尼尔

1 个答案:

答案 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)的数组相同。如果你能保证epochsx拆分为相等长度的数组,您可以使用

x2 = x.reshape(2, -1)

代替。然后x2将是形状(2, 50)数组reshape更快 比array_splitreshape,因为array_split只需更改属性 mlab.csd必须将数据分配并复制到新数组中。无论如何,它是 通常更好地将数据保存在一个大数组而不是列表中的部分 数组,因为列表上的计算通常需要Python循环 使用NumPy时的性能祸害。当然,有时Python循环 无法避免,例如在调用UserOrganization newuserorg = new UserOrganization(); newuserorg.setCostCenter = "test"; newuserorg.setDepartment = "test"; ... ... 时就是这种情况。