Numpy:通过对NxM数组的列(或行)执行操作,在数组中插入新元素

2024-06-16 12:53:38 发布

您现在位置:Python中文网/ 问答频道 /正文

这可能是一个愚蠢的问题,但我刚刚开始使用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库执行这样的操作

谢谢你的预付款


Tags: numpy情况数组array新元素foreach预付款
2条回答

您的数组是一个1d、2元素的对象数据类型数组,其中包含字典:

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}]

要对这些词典采取行动,您只需对它们进行迭代即可。{}numpy操作以数字形式工作,而不是字典或一般Python对象

我建议您使用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

相关问题 更多 >