如何提取pandas DataFrame中Numpy矩阵列的指定位置元素
错误原因
你写的df["matrix"][:][1,1]逻辑不成立:df["matrix"]返回的是存储Numpy矩阵的Pandas Series对象,[:]仅对该Series做全量切片,得到的还是Series结构,不是堆叠后的三维Numpy数组,无法直接通过[1,1]索引批量取每个矩阵的对应位置元素。
正确实现方案
- 方法1:通用逐元素提取(适合矩阵形状不一致的场景)
对Series的每个元素单独执行索引操作,代码如下:# 单独提取对应值的Series mat_pos_values = df["matrix"].apply(lambda mat: mat[1, 1]) # 如果需要直接新增为DataFrame的列方便后续绘图,可写为: df["mat_1_1"] = df["matrix"].apply(lambda mat: mat[1, 1]) - 方法2:堆叠后批量索引(适合所有矩阵形状相同的场景,效率更高)
先把整个matrix列的所有矩阵堆叠成三维Numpy数组,再批量切片取对应位置:import numpy as np mat_pos_values = np.stack(df["matrix"].to_numpy())[:, 1, 1]
内容的提问来源于stack exchange,提问作者Asbjoern Lund
相关产品推荐
相关产品推荐

