使用python切割数据集

时间:2015-03-24 15:06:41

标签: python python-2.7 python-3.x numpy

我每分钟在一个月内研究太阳频率。所以我有一个矩阵M,有43200个元素,每分钟一个。

为所有元素执行功率谱的方法是:

import numpy as np
import pylab as pl
from scipy import fftpack

M=np.loadtxt('GOLF-SOHO-Sol.dat')
N=len(M)
dt=1

t= np.arange(0., N, dt)
yt = M


frecs= fftpack.fftfreq(yt.size, dt)        
fft_yt = fftpack.fft(yt)                   
vector_amp = np.abs(fft_yt)                 

pl.subplot(212)
pl.xlim(-0.5, 0.5)
pl.plot(frecs, vector_amp, color="blue", linestyle="-", linewidth=1.5)
pl.xlabel('Frecuencia (Hz)')
pl.ylabel('Espec. amplitud')
pl.title('Espectro de amplitud')
marcasx = np.arange(-0.5, 0.5, 0.1)                    # vector de marcas en x
pl.xticks(marcasx)

pl.show()

问题是现在我想在这个矩阵中做一些削减。我每12小时只需要一次数据(晴天时)。所以在我的矩阵M中我需要例如前720个相同但是nexts 720必须是0,nexts 720是原件而nexts 720是零等等。

我该如何计算?我应该做一个bucle,其中每720个日期都会改变。

提前谢谢你。我希望我很清楚。

1 个答案:

答案 0 :(得分:1)

# your data values (all ones for illustration)
>>> values = numpy.ones( (43200,) )

# reshape to matrix with rows of 720 samples
>>> mat    = values.reshape( (60, 720) )

# now it's easy to set alternating rows to 0.0
>>> mat[1::2, :] = 0

# and because y is a view of your data, "values" now
# has zeroes in the right places
>>> values[710:730]
array([ 1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  0.,  0.,  0.,
0.,  0.,  0.,  0.,  0.,  0.,  0.])