Numpy二维数组仅修改第二列后变一维,如何保留原二维结构?
如何仅修改Numpy数组的第二列并保留二维结构?
你的问题出在赋值操作替换了整个数组对象:arr=arr[:,1]-125会把arr[:,1]-125生成的一维数组直接赋值给arr,导致原二维数组的结构丢失。
要实现仅修改第二列且保留二维结构,有两种常用方式:
1. 原地修改原数组(推荐)
直接对第二列的视图进行操作,不需要重新赋值整个数组:
arr[:, 1] -= 125
arr[:,1]返回的是原数组第二列的视图(不是新数组),对它执行-=125会直接修改原数组中第二列的所有元素,第一列完全不受影响,数组的二维结构也会保留。
2. 创建新数组(不修改原数组)
如果需要保留原数组不变,可以先复制原数组,再修改副本的第二列:
import numpy as np # 假设原数组是arr new_arr = arr.copy() new_arr[:, 1] -= 125
这样arr保持原样,new_arr是修改后的二维数组。
执行上述操作后,打印数组会得到你期望的结果:
array([[124609., 349.], [ 46225., 228.], [ 50176., 215.], ..., [ 51984., 224.], [ 46225., 228.], [ 50176., 215.]])
内容的提问来源于stack exchange,提问作者mariatorrex
相关产品推荐
相关产品推荐

