如何仅反转NumPy二维数组的第二列?
如何仅反转NumPy数组的指定列?
问题描述
我有一个3行2列的NumPy数组:
np.array([[93, 95], [84, 100], [99, 87]])
希望仅反转该数组的第二列,得到目标数组:
np.array([[93, 87], [84, 100], [99, 95]])
我尝试了以下代码:
grades = np.array([[93, 95], [84, 100], [99, 87]]) print(grades[::-1,:])
但得到的结果是:
[[ 99 87] [ 84 100] [ 93 95]]
我知道这是因为该代码反转了整个行轴的所有元素,导致第一列也被反转,请问应该编写什么代码来得到目标数组?
解决方案
要仅反转指定列,你需要单独选中目标列,反转后重新赋值回去。代码如下:
import numpy as np grades = np.array([[93, 95], [84, 100], [99, 87]]) # 复制原数组避免修改原始数据(可选,若不需要保留原数组可省略) target_grades = grades.copy() # 选中第二列(索引为1),反转后赋值 target_grades[:, 1] = target_grades[:, 1][::-1] print(target_grades)
执行后输出结果:
[[ 93 87] [ 84 100] [ 99 95]]
说明
grades[:, 1]表示选中数组中所有行的第二列(NumPy采用0-based索引,所以第二列对应索引1)。[::-1]用于反转该列的元素顺序。- 如果你不需要保留原始数组,也可以直接在原数组上修改:
grades[:, 1] = grades[:, 1][::-1]。
内容的提问来源于stack exchange,提问作者Willow
相关产品推荐
相关产品推荐

