使用numpy将数组分组为嵌套结构

假设我有一个像这样的numpy数组(更大,每个日期的重复次数不同):


data = np.array([              \

   ["2011-01-01", 24, 554, 66],  \

   ["2011-01-01", 44, 524, 62],  \

   ["2011-01-04", 23, 454, 32],  \

   ["2011-01-04", 22, 45,  42],  \

   ["2011-01-04", 14, 364, 12]   \

])

现在,我想按日期将列分组为一个更扁平的结构:


[              

   ["2011-01-01", [[24, 554, 66], [44, 524, 62]]],

   ["2011-01-04", [[23, 454, 32], [22, 45, 42], [14, 364, 12]]]  

]

我确实知道如何通过遍历数组和附加元素来做到这一点,但是在我看来,这是极其不可思议的。是否有一些内置的numpy函数来执行此操作,或者有一些针对此类任务的自定义单行代码?


桃花长相依
浏览 154回答 2
2回答

森栏

我不太确定您如何存储日期;您提供的示例将无法实际使用,因为日期将被解释为算术运算。但是,如果您有特定的日期date想要嵌套数组,则可以通过索引轻松获得它:data[ data[:,0]==date, 1: ]这将选择每一行以及您想要的日期,然后仅给您数字。如果您希望每个日期都使用此方法,则可以使用以下方法:[ [ date, data[ data[:,0]==date, 1: ] ] for date in np.unique(data[:,0]) ]请注意,这将使您将嵌套列表部分作为numpy数组使用,但是如果您希望将其作为普通列表,则将其转换很容易。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python