我有一个从csv(np.recfromcsv
)导入的大数组,我想通过数组中的ID列分割成更小的数组。 例如我的阵列(A)是这样的:按列中的唯一值拆分numpy数组
[(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,等)的阵列。我一直试图找到一种方法来使用numpy的vsplit方法,使用我生成的唯一ID值列表(id_list = list(set(a['id']))
),但是我得到的错误:ValueError:vsplit只适用于2维或更多维数组。这使我认为np.recfromcsv
工具不能正确生成尺寸。我应该使用不同的导入工具吗?
我自己也尝试在一个简单的循环这样做:
for e in id_list:
name = "id" + str(e)
name = a[a['id']==e]
但是,这会产生错误:语法错误:无法分配给运营商。我知道问题是动态变量,但我没有其他方法可以实现这一点,而不必为每个ID覆盖数组。
我真的很感谢关于如何解决这个问题的建议。
我使用np.loadtxt()获得了相同的ValueError,并且test.shape显示它仍然是一维数组:(1890,) – AlmaThom
您可以使它在Web中的某处位于输入文件的示例中...似乎有什么不对... –
我已经删除了这个任务的一些多余的列,并把它放在这里:http://www.filedropper.com/samplea – AlmaThom