python从数组中提取元素

新手上路,请多包涵

我有一个 8000 元素的一维数组。

我想获得以下两个数组:

  1. test contains the element with the index from [1995:1999] , [3995:3999] , [5999:5999] , [7995:7999] .

  2. train 应该包含其他所有内容。

我该怎么做?


 idx = [1995,1996,1997,1998, 1999, 3995, 3996, 3997,3998, 3999, 5995, 5996, 5997, 5998, 5999, 7995, 7996, 7997, 7998, 7999]
test = [X[i] for i in idx]

train = [X[i] for i **not** in idx]

原文由 wrek 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 246
2 个回答

根据您的示例,一个简单的解决方法是:

 train = [X[i] for i, _ in enumerate(X) if i not in idx]

原文由 Arya McCarthy 发布,翻译遵循 CC BY-SA 3.0 许可协议

构建 train 时,您需要遍历所有源数据。

使用 enumerate 应该让事情变得简单:

 >>> data = list(range(8000))
>>> train, test = [], []
>>> for i, value in enumerate(data):
...     if 1995 <= i <= 1999 or 3995 <= i <= 3999 or 5995 <= i <= 5999 or 7995 <= i <= 7999:
...         test.append(value)
...     else:
...         train.append(value)
...
>>> test
[1995, 1996, 1997, 1998, 1999, 3995, 3996, 3997, 3998, 3999, 5995, 5996, 5997, 5998, 5999, 7995, 7996, 7997, 7998, 7999]
>>> len(train)
7980

原文由 import random 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题