首页 > 解决方案 > 如何用常量替换 ndarray 中每一行的最后一个元素(或任何元素)?

问题描述

我想用常量替换 ndarray 中每一行的最后一个元素。目前我可以通过使用循环来解决这个问题,但我正在寻找一个优雅的解决方案。最好使用numpy函数。

例如我有一个 ndarray :

[1 3 4 5]
[4 2 4 1]
[3 2 7 3]
[7 9 4 3]
[6 9 7 2]

这是我想要的结果,每行的最后一个元素都替换为 10

[1 3 4 10]
[4 2 4 10]
[3 2 7 10]
[7 9 4 10]
[6 9 7 10]

标签: pythonnumpynumpy-ndarraynumpy-slicing

解决方案


对列使用 numpy 索引

import numpy as np
arr = np.array([[1,3,4,5],
     [4,2,4,1],
     [3,2,7,3],
     [7,9,4,3],
     [6,9,7,2]])
arr[:,-1]=10
arr
array([[ 1,  3,  4, 10],
       [ 4,  2,  4, 10],
       [ 3,  2,  7, 10],
       [ 7,  9,  4, 10],
       [ 6,  9,  7, 10]])

推荐阅读