所以我有几个包含超过+80.000行数据的.txt文件。 因此,对于Python来说这可能不是很多,但是,我需要在R中使用这些数据,我需要一个特定的包。在那里加载一个文件大约需要30秒 - 我有1200个这样的文件。
但是,这些文件中的数据相当密集。没有必要这么小的步骤,即我想删除一些以使文件变小。
我现在使用的内容如下:
np.delete(np.array(data_lines), np.arange(1, np.array(data_lines).size, 2))
我从行索引1开始,并删除包含+80.000行数据的data_lines
数组的每隔一行。但是,正如您所看到的,这只会减少1/2的行数。而且我可能需要至少减少1/10。所以原则上我可能只是做一些循环来做到这一点,但我想知道是否有更聪明的方法来实现它?
答案 0 :(得分:1)
a = np.array(data_lines)[::10]
每隔十行获取一次数据。没有数据被复制,切片适用于视图对象。
答案 1 :(得分:0)
你应该使用切片。在我的示例数组中,每行中的值与行索引(0,1,...,79999)相同。我删除了我的80000 x 1 np阵列中的每10行(列的数量并不重要......这可以在具有多于1列的阵列上工作)。如果您想以不同方式对其进行切片,请参阅切片https://docs.scipy.org/doc/numpy-1.13.0/reference/arrays.indexing.html
的更多信息import numpy as np
data_lines = np.arange(0,80000).reshape((80000,1))
#
data_lines = data_lines.reshape((80000,1))
data_lines_subset = data_lines[::10]
##data_lines_subset
## array([[ 0],
# [ 10],
# [ 20],
# ...,
# [79970],
# [79980],
# [79990]])
所以在你的情况下,如果你的data_lines数组不是一个np数组:
data_lines_subset = np.array(data_lines)[::10]