如何获取一维NumPy数组各元素索引?需实现元素与索引相乘
嘿,你这个思路其实已经踩中NumPy里处理这类需求的惯用方法啦!
一维NumPy数组获取元素索引的标准方案
你用到的x * np.arange(np.size(x))就是NumPy中实现“元素乘自身索引”的最常用方式,完全符合惯用写法,原因如下:
- 高效简洁:
np.arange()会快速生成和输入数组长度完全一致的索引序列,配合NumPy的广播机制,直接就能完成元素级的乘法运算,不需要写循环,性能拉满。 - 无场景限制:不管数组里有没有重复元素,这个方法都能精准对应每个元素的位置索引——完美避开了你提到的
np.where()的局限性,毕竟np.where()是用来根据值条件筛选索引的,当元素值重复时,它根本没办法一次性拿到所有元素各自的索引。
示例代码
import numpy as np # 测试用的一维数组(包含重复元素) x = np.array([2, 5, 2, 7, 9]) # 元素与索引相乘的运算 result = x * np.arange(x.size) print(result) # 输出: [ 0 5 4 21 36]
另外补充个小细节:如果你的数组确定是一维的,用np.arange(x.shape[0])代替np.arange(np.size(x))也完全可行,两者效果一致,都是生成从0开始的连续索引序列。
内容的提问来源于stack exchange,提问作者Komov
相关产品推荐
相关产品推荐

