【问题标题】:Selecting specific range of columns from .CSV file [duplicate]从.CSV文件中选择特定范围的列[重复]
【发布时间】:2018-05-30 15:38:04
【问题描述】:

我有一个包含 78000 列的 CSV 文件。我正在尝试选择列 2-100、102-200 和最后 300 列。其余列需要跳过。

我已经使用 numpy.loadtxt 来选择列范围:

numpy.loadtxt(input_file_name, delimiter=",", skiprows = 1, usecols=range(1,99))

我们如何选择列块做类似的事情,比如:

numpy.loadtxt(input_file_name, delimiter=",", skiprows = 1, usecols=(range(1,99),range(101,199),range(74999,77999)))

【问题讨论】:

  • 这是一个普遍的重复,但我已经为我的答案添加了一个 numpy 解决方案,这应该很有用。如果其他人想回答这个问题,请联系我,我会重新打开它,只要解决方案没有在副本中链接(即,一个 numpy 解决方案)。
  • 感谢您的接受!如果答案有用,您也可以投票赞成,因此请考虑这样做。谢谢。

标签: python arrays numpy indexing


【解决方案1】:

使用 numpy 行选择器np.r_

>>> np.r_[range(3), range(15, 18), range(100, 103)]

或者(使用 hpaulj 的建议),

>>> np.r_[0:3, 15:16, 100:103]

array([  0,   1,   2,  15,  16,  17, 100, 101, 102])

对于您的代码,您可以这样称呼它 -

numpy.loadtxt(
  input_file_name, 
  delimiter=",", 
  skiprows = 1, 
  usecols=np.r_[range(1, 99), range(101, 199), range(74999, 77999)]
)

【讨论】:

  • np.r_[0:3, 15:16, 100:103] 也应该可以工作。
  • @hpaulj 谢谢,很好。当我专注于 OP 对范围对象的要求时,我突然想到了。
猜你喜欢
  • 2018-09-10
  • 1970-01-01
  • 2022-11-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-17
  • 1970-01-01
相关资源
最近更新 更多