使用np.where()函数时其返回值后追加的[1]有什么作用?
问题核心解答
我们可以拆解np.where()的返回逻辑和代码输入结构来理解[1]的作用:
- 首先明确
np.where()的返回规则:当传入一个n维的布尔数组作为参数时,它会返回一个长度为n的元组,元组的第i个元素是所有符合条件的位置在第i个维度上的索引组成的数组。 - 看代码里的输入参数
[date_lengths == 24]:date_lengths本身是存储每行日期字符串长度的一维序列,date_lengths == 24的计算结果是一个一维布尔数组,但外面多套了一层方括号,相当于把它升维成了形状为(1, N)的二维数组(1行N列,N是原数据的总行数)。 - 这时候
np.where([date_lengths == 24])返回的元组有两个元素:- 索引为
[0]的元素:所有符合条件的位置的行索引数组,因为二维数组只有1行,所以所有值都是0,没有实际使用价值 - 索引为
[1]的元素:所有符合条件的位置的列索引数组,正好对应原数据里满足date_lengths == 24的行的下标,也就是需要的异常数据索引
- 索引为
这段代码其实有冗余写法,如果去掉参数外面多余的方括号,写成indices = np.where(date_lengths == 24)[0]也能拿到完全一样的结果,逻辑更直观。
内容的提问来源于stack exchange,提问作者Oskr
相关产品推荐
相关产品推荐

