这篇教程numpy 实现返回指定行的指定元素的位置索引写得很实用,希望能帮到您。 先上代码,主要语句为np.where(b[c]==1), 详细解释如下:import numpy as np b = np.array([[-2,-3,0,0,0,6,4,1],[88,1,0,0,0,6,4,2],[99,6,0,0,1,6,4,2]]) # 三行八列的数组bprint('b/n',b) c = np.array([2,0]) # c表示指定行print('b[c]/n',b[c]) # b[c]返回 数组b的指定行 这里依次返回了b的下标为2和0的行 print('/n')print(np.where(b[c]==1)) # 返回指定行的指定元素的位置索引 这里返回了b[c]每行中 值为1的位置索引 
观察np.where()的返回值(array([0, 1], dtype=int64), array([4, 7], dtype=int64))可以发现, 对于数组b[c]来说,其中值为1的位置在[0,4]以及[1,7]上,np.where()返回了一个元组,[0]的位置表示行索引,[1]表示列索引。 综上,np.where(b[c]==1)实现的功能是,从b中按c中元素的顺序找到c所指定的行,然后再这些行中发现值为1的位置。 补充:短小精悍算例:Python如何提取数组Numpy array中指定元素的位置索引 数组a的表达式如下:import numpy as npa = np.array([1, 2, 3, 2, 2, 3, 0, 8, 3])print(a) 输出结果: [1 2 3 2 2 3 0 8 3]
现在要找出a中元素3的位置索引。r1 = np.where(a==3)print(type(r1))print(r1) 输出结果: <class 'tuple'> (array([2, 5, 8], dtype=int64),)
可见得到的是一个tuple。 如果要想得到array,采用如下表示:r1 = np.where(a==3)print(type(r1[0]))print(r1[0]) 输出结果: <class 'numpy.ndarray'> [2 5 8]
还可以使用argwhere()函数进行操作:r2 = np.argwhere(a==3)print(type(r2))print(r2)print(r2.shape) 输出结果: <class 'numpy.ndarray'> [[2] [5] [8]] (3, 1)
以上为个人经验,希望能给大家一个参考,也希望大家多多支持51zixue.net。如有错误或未考虑完全的地方,望不吝赐教。 Django Admin 管理工具的实现 numpy中np.nditer、flags=[multi_index] 的用法说明 |