300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > python获取指定元素索引

python获取指定元素索引

时间:2022-09-02 15:55:36

相关推荐

python获取指定元素索引

该方案仅供参考、学习交流!

有时候需要查询一个list或者array中某个元素所在的位置索引,也就是行列号,对于pandas数据而言这个比较容易,但是对于一般的list或者array而言,简单的可以用list.index或者np.where等获取,但是对于部分特殊情况却无法获取,下方所构建get_index方法可适用于所有情景。

函数说明:输入参数为数据集source和需要查询位置的目标target,二者的维数可以是任意维数,数据类型可以是list也可以是array,使用时需要提前导入numpy包。返回内容为索引组成的list。

import numpy as npdef get_index(source,target):if type(source) is not np.ndarray:source_arr = np.array(source)else:source_arr = sourceif type(target) is not np.ndarray:target_arr = np.array(target)else:target_arr = targetsource_dim = len(source_arr.shape)target_dim = len(target_arr.shape)target_index = []dim_delta = source_dim - target_dimif dim_delta == 1:for i in range(len(source_arr)):if (target_arr == source_arr[i]).all():target_index.append(i)elif dim_delta == 2:for i in range(len(source_arr)):for j in range(len(source_arr[i])):if (target_arr == source_arr[i][j]).all():target_index.append([i,j])elif dim_delta == 3:for i in range(len(source_arr)):for j in range(len(source_arr[i])):for k in range(len(source_arr[i][j])):if (target_arr == source_arr[i][j][k]).all():target_index.append([i,j,k])else:print('所需索引非常规,请另寻他法!',end='')return target_index

测试数据如下:

a1 = [1,3,5,6,3]a2 = [[1,2,3],[3,6,1],[1,2,3],[7,3,2]]a3 = [[[1,2,3],[3,6,1],[1,2,3],[7,3,2]]]a4 = [[[[1,2,3],[3,6,1],[1,2,3],[7,3,2]]]]b0 = 3b1 = [1,2,3]

测试结果如下:

print('维数相对索引为:',end='')print(get_index(a2,b0))# 维数相对索引为:[[0, 2], [1, 0], [2, 2], [3, 1]]print('维数相对索引为:',end='')print(get_index(a2,b1))# 维数相对索引为:[0, 2]print('维数相对索引为:',end='')print(get_index(a3,b1))# 维数相对索引为:[[0, 0], [0, 2]]print('维数相对索引为:',end='')print(get_index(a3,b0))# 维数相对索引为:[[0, 0, 2], [0, 1, 0], [0, 2, 2], [0, 3, 1]]print('维数相对索引为:',end='')print(get_index(a4,b0))# 维数相对索引为:所需索引非常规,请另寻他法![]print('维数相对索引为:',end='')print(get_index(a1,b1))# 维数相对索引为:所需索引非常规,请另寻他法![]

以上内容为原创内容,仅用于学习交流,网络写手复制粘贴再发表者请绕道!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。