在Python中,我可以从最后一行部分完整的矩阵中修剪数据吗



我目前正在处理一个可变长度的向量(大约500000个元素(,并试图使用numpy对其进行整形。我的代码在下面。

tm = 1800 #Number of samples per row (total number of columns)
xyzd = np.genfromtxt(filename, delimiter=',', usecols=(4,5,6,14), encoding='ISO-8859–1', skip_header=1) #reading in the data
xtm = np.reshape(xyzd[:,0],(tm,len(xyzd)//tm+1)) #my attempt to resize

我认为这是一个错误:

ValueError:无法将488200大小的数组整形为形状(1800272(我相信这是因为整形后最后一排只剩下一部分。

有没有一种方法可以让整形只填充到它填充的最后一整行,然后把剩下的数据扔掉,或者以某种方式整形,让它接受重新整形的矩阵,然后我可以修剪掉最后一行。

正如hpaulj在评论中所建议的那样,reshape似乎太笨了,没有简单的方法来做到这一点。所以我的解决方案只是做一些数学运算。

columns = len(xyzd)//tm
elements = tm * columns
initial_length = len(xyzd)
n = abs(initial_length-elements)
xyzd = xyzd[:-n, :]

这解决了我的问题。我假设我的数据集的最后几百个数据点并没有那么重要,但我们的采样率如此之高,以至于我们在5天的样本中减少了大约2分钟,但我愿意冒着这样的风险,那时候不会发生什么酷的事情。

相关内容

  • 没有找到相关文章

最新更新