numpy.where
函数是三元表达式x if condition else y
的向量化版本。算法
例如:数组
咱们有一个条件和两个数组。dom
import numpy as np xarr = np.array([1.1,1.2,1.3,1.4,1.5]) yarr = np.array([2.1,2.2,2.3,2.4,2.5]) cond = np.array([True,False,True,True,False]) # 当cond元素为真时,取xarr中的元素,不然取yarr中的元素 result = np.where(cond,xarr,yarr) print(result)
结果以下:函数
numpy.where的第二个和第三个参数并不须要是数组,也能够是标量。性能
假设你有一个随机生成的矩阵数据,而且想把全部大于0.5都替换成1,小于0.5都替换成为0,使用np.where很容易实现。code
arr = np.random.rand(4,4) print(arr) result1 = np.where(arr > 0.5, 1, 0) print(result1)
输出以下:orm
图中列出了所有的基本数组统计方法:blog
mean、sum等函数能够接受一个可选参数axis,这个参数能够用于计算给定轴向上的统计值,造成一个降低一维度的数组。排序
像cumsum、cumprod并不会聚合,但会产生一个中间结果。数据分析
布尔值会被强制为1(TRUE)和0(FALSE)。所以sum一般能够用于计算布尔值数组的TRUE的个数。
arr_sum = np.random.randn(100) print("大于0.5的值有{0}个".format((arr_sum > 0.5).sum()))
结果以下:
对于布尔值数组,有两个经常使用方法any
和all
。
any
检查数组中是否至少有一个True,而all
检查是否每一个值都为True。
NumPy数组可使用sort
方法按位置排序。
NumPy 提供了多种排序的方法。 这些排序函数实现不一样的排序算法,每一个排序算法的特征在于执行速度,最坏状况性能,所需的工做空间和算法的稳定性。 下表显示了三种排序算法的比较。
NumPy经常使用的一个方法是:np.unique
。
该方法返回的是数组中惟一值排序后造成的数组。
np.in1d
能够检查一个数组中的值是否存在于另一个数组中,并返回一个布尔值数组。
names = np.array(['Bob', 'Joe', 'Will', 'Bob', 'Will', 'Joe', 'Joe']) # 返回惟一值排序后的结果 print(np.unique(names)) values = np.array([6, 0, 0, 3, 2, 5, 6]) # 检查一个数组是否存在于另一个数组中。 print(np.in1d(values, [2, 3, 6]))
结果以下: