【发布时间】:2019-03-18 00:14:16
【问题描述】:
我有一个包含对象的 numpy 数组。
例如我的数组是:
a = np.array({'a':1,'b':2},....,{'a':n,'b':n+1})
数据并不那么重要,但我需要为每一列调用该对象的属性。
使用我的字典示例,我想调用 keys() 以打印出该行上的键列表并以 numpy 数组的形式返回:
a[0].keys()
如果我使用 Pandas,我可以在列上利用 apply() 并使用 lambda 函数来执行此操作。对于这种情况,我不能使用 Pandas,那么如何在单个 numpy 数组列上执行相同的操作?
我尝试使用apply_along_axis,但 lambda 一次将 arr 作为一个整体传递,而不是一行,所以我基本上需要在我的 lambda 中使用 for 循环来获取我的方法。
np.apply_along_axis(lambda b: b.keys(), axis=0, arr=self.data)
上面的代码不起作用! (我知道这一点)。
如果有办法使用 numpy 数组执行pandas.apply()?
在这种情况下,所需的结果是 N 行 numpy 数组,其中包含 [a,b] 列表。
【问题讨论】:
-
a = np.array({'a':1,'b':2},....,{'a':n,'b':n+1})- 首先,这不是调用np.array的有效方式,即使用一些合理的东西代替....。其次,你为什么要把一堆字典放在一个数组中? NumPy 的设计不是为了方便或高效地用于这种用途。 -
此外,在
keys()生成列表的任何 Python 版本上,不保证 dict 顺序。 -
这只是一个例子。我真的在数组中保存了多个 JSON 响应。
标签: python arrays pandas numpy