微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐