这可能是一个愚蠢的问题,但是我刚刚开始使用numpy,我必须弄清楚如何执行一些简单的操作。
假设我有2x3数组
array([{"a":1, "b":2, "c":3],
{"a":4, "b":5, "c":6}])
我想执行一些操作并在数组中插入新元素(d和e),
d = a + b, e = b - c
array([{"a":1, "b":2, "c":3, "d":3, "e":-1],
{"a":4, "b":5, "c":6, "d":9, "e":-1}])
如何在没有foreach循环的情况下使用numpy库执行此类操作?
先谢谢...
答案 0 :(得分:1)
我建议您将pandas.DataFrame用于按列操作。如果必须严格使用numpy,显然这不能解决您的问题。但是,从您提供的代码行来看,pandas库似乎是正确的选择。这是您描述的问题的示例。
import pandas as pd
df = pd.DataFrame([{"a":1, "b":2, "c":3}, {"a":4, "b":5, "c":6}])
df["d"] = df["a"] + df["b"]
df["e"] = df["b"] - df["c"]
print(df)
输出:
a b c d e
0 1 2 3 3 -1
1 4 5 6 9 -1
答案 1 :(得分:0)
您的数组是一个包含字典的1d,2元素对象dtype数组:
In [26]: arr = np.array([{"a":1, "b":2, "c":3}, {"a":4, "b":5, "c":6}])
In [27]: arr
Out[27]: array([{'a': 1, 'b': 2, 'c': 3}, {'a': 4, 'b': 5, 'c': 6}], dtype=object)
词典列表可能更有意义:
In [28]: alist = [{"a":1, "b":2, "c":3}, {"a":4, "b":5, "c":6}]
In [29]: alist
Out[29]: [{'a': 1, 'b': 2, 'c': 3}, {'a': 4, 'b': 5, 'c': 6}]
要对这些词典采取行动,您只需对它们进行迭代。 whole-array
numpy运算以数字而不是字典或一般的Python对象工作。