两列之间的 Numpy 算术运算

数据挖掘 Python 熊猫 麻木的
2022-02-28 19:44:48

下面是numpy数组。我需要对这个数组执行两个操作。

  1. 添加一列,其值为 [column 1] - [column 3]。
  2. 添加另一列,其值为 [column 1] - [previous value of column1]。

我可以使用普通的列表操作来做到这一点,但是可以使用 numpy 或 pandas 吗?如果是这样,怎么办?

输入数据:

[['78' '3412' '98' '3441']
 ['106' '3412' '127' '3434']
 ['139' '3411' '160' '3434']
 ['170' '3411' '191' '3442']
]
1个回答

使用 numpy 或 pandas 可以轻松完成这些类型的操作。但是,在这种情况下,我会推荐 pandas,因为它更直观。使用示例数组,我们可以创建一个 pandas 数据框:

arr = np.array([[78, 3412, 98, 3441], [106, 3412, 127, 3434], [139, 3411, 160, 3434], [170, 3411, 191, 3442]])
df = pd.DataFrame(arr, columns=['a', 'b', 'c', 'd'])

现在可以按如下方式添加两个新列:

df['e'] = df['a'] - df['c']
df['f'] = df['a'].diff(1)

直接使用 numpy,一种可能的方法是:

arr = np.c_[ arr, arr[:,0] - arr[:,2], np.append(np.NaN, arr[1:, 0] - arr[:-1, 0]) ]