python – numpy.where返回一个元组的目的是什么?

当我运行此代码时:

import numpy as np
a = np.array([1,2,3,4,5,6])
print(np.where(a > 2))

获得一个指数数组是很自然的,其中一个> 2,即[2,5],但我们得到:

(array([2,dtype=int64),)

一个空的第二个成员的元组.

然后,为了获得numpy.where的“自然”答案,我们必须这样做:

np.where(a > 2)[0]

这个元组有什么意义?它在哪种情况下有用?

注意:我在这里只是谈论用例numpy.where(cond)而不是numpy.where(cond,x,y)也存在(参见文档).

解决方法

numpy.where返回一个元组,因为元组的每个元素都引用一个维度.

在2个维度中考虑此示例:

a = np.array([[1,6],[-2,1,5]])

print(np.where(a > 2))

(array([0,1],array([2,dtype=int64))

如您所见,元组的第一个元素是指相关元素的第一维;第二个元素指的是第二个维度.

这是一个经常使用的常规numpy.当你要求数组的形状时,你也会看到它,即一维数组的形状将返回一个带有1个元素的元组

a = np.array([[1,5]])

print(a.shape,a.ndim)  # (2,6) 2

b = np.array([1,6])

print(b.shape,b.ndim)  # (6,) 1

相关文章

功能概要:(目前已实现功能)公共展示部分:1.网站首页展示...
大体上把Python中的数据类型分为如下几类: Number(数字) ...
开发之前第一步,就是构造整个的项目结构。这就好比作一幅画...
源码编译方式安装Apache首先下载Apache源码压缩包,地址为ht...
前面说完了此项目的创建及数据模型设计的过程。如果未看过,...
python中常用的写爬虫的库有urllib2、requests,对于大多数比...