我有一个从 csv ( np.recfromcsv
) 导入的大数组,我想通过所述数组中的 ID 列将其划分为较小的数组。例如我的数组(a)看起来像:
[(842, 129826, 2018, 7246, '1/4/2009', 452, '1/4/2009', 452, '1/4/2009')
(863, 129827, 2018, 7246, '1/7/2009', 452, '1/7/2009', 452, '1/7/2009')
(890, 129828, 2019, 7246, '1/11/2009', 452, '1/11/2009', 452, '1/11/2009')
...,
(339, 131268, 1085, 4211, '12/1/2009', 220, '12/2/2009', 220, '12/1/2009')
(376, 131535, 1085, 4211, '12/8/2009', 220, '12/9/2009', 220, '12/8/2009')
(470, 131536, 1087, 4211, '12/28/2009', 220, '12/29/2009', 220, '12/28/2009')]
我想根据第三列(2018、2019、1085 等)将其拆分为数组。我一直在尝试找到一种方法来使用我生成的唯一 ID 值 () 列表来使用 numpy 的 vsplit 方法id_list = list(set(a['id']))
,但是我得到了错误:ValueError: vsplit only works on arrays of 2 or more dimensions。这让我认为该np.recfromcsv
工具无法正确生成尺寸。我应该使用不同的导入工具吗?
我也试过在一个简单的循环中这样做:
for e in id_list:
name = "id" + str(e)
name = a[a['id']==e]
但这会产生一个错误:SyntaxError: can't assign to operator。我知道问题出在动态变量上,但我认为没有其他方法可以在不覆盖每个 ID 的数组的情况下实现这一点。
我非常感谢有关如何解决这个问题的建议。