小编Ben*_*uet的帖子

使用 loc 方法获取 DataFrame 的视图

我正在尝试使用该loc方法获取Pandas数据帧的视图,但是当我修改原始数据帧时它没有按预期工作。
我想使用该loc方法提取 DataFrame 的一行/切片,以便在对 DataFrame 进行修改时,切片反映更改。

让我们看看这个例子:

import pandas as pd
import numpy as np
df = pd.DataFrame({'ID':np.arange(0,5,2), 'a':np.arange(3), 'b':np.arange(3)}).set_index('ID')
df
    a   b
ID      
0   0   0
2   1   1
4   2   2
Run Code Online (Sandbox Code Playgroud)

现在我使用 loc 创建一个切片:

slice1 = df.loc[[2],]
slice1

    a   b
ID      
2   1   1
Run Code Online (Sandbox Code Playgroud)

然后我修改原始DataFrame:

df.loc[2, 'b'] = 9
df

    a   b
ID      
0   0   0
2   1   9
4   2   2
Run Code Online (Sandbox Code Playgroud)

但不幸的是,我们的切片并没有像我期待的那样反映这种修改:

slice1
    a   b
ID      
2   1   1
Run Code Online (Sandbox Code Playgroud)

我的期望:

    a   b
ID …
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas

5
推荐指数
1
解决办法
141
查看次数

计算多维 numpy 数组元素的内点积

计算多维 numpy 数组的“内部”点积的最优雅的方法是什么?

假设我有 2 个形状为 (2, 2, 2) 的数组ab(可以是 (n, n, 2) 且 n>= 2),我想用以下方法计算inner_dot(a, b)定义:

np.array([[np.dot(a[0, 0, :], b[0, 0, :]), np.dot(a[1, 0, :], b[1, 0, :])],
          [np.dot(a[0, 1, :], b[0, 1, :]), np.dot(a[1, 1, :], b[1, 1, :])]])
Run Code Online (Sandbox Code Playgroud)

这是一个例子:

a = np.arange(8).reshape(2, 2, 2)
b = np.arange(8).reshape(2, 2, 2)
Run Code Online (Sandbox Code Playgroud)

预期结果:

array([[ 1, 41],
       [13, 85]])
Run Code Online (Sandbox Code Playgroud)

python numpy scipy

4
推荐指数
1
解决办法
106
查看次数

标签 统计

python ×2

dataframe ×1

numpy ×1

pandas ×1

scipy ×1