NumPy入门05---使用数组进行面向数组编程

01 将条件逻辑作为数组操作

numpy.where函数是三元表达式x if condition else y的向量化版本。

例如:

我们有一个条件和两个数组。

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的第二个和第三个参数并不需要是数组,也可以是标量。

where在数据分析中的典型用法是根据一个数组来生成一个新的数组。

假设你有一个随机生成的矩阵数据,并且想把所有大于0.5都替换成1,小于0.5都替换成为0,使用np.where很容易实现。

arr = np.random.rand(4,4)
print(arr)
result1 = np.where(arr > 0.5, 1, 0)
print(result1)

输出如下:

02 数学和统计方法

图中列出了全部的基本数组统计方法:

mean、sum等函数可以接受一个可选参数axis,这个参数可以用于计算给定轴向上的统计值,形成一个下降一维度的数组。

像cumsum、cumprod并不会聚合,但会产生一个中间结果。

03 布尔值数组的方法

布尔值会被强制为1(TRUE)和0(FALSE)。因此sum通常可以用于计算布尔值数组的TRUE的个数。

arr_sum = np.random.randn(100)

print("大于0.5的值有{0}个".format((arr_sum > 0.5).sum()))

结果如下:

对于布尔值数组,有两个常用方法anyall

any检查数组中是否至少有一个True,而all检查是否每个值都为True。

04 排序

NumPy数组可以使用sort方法按位置排序。

NumPy 提供了多种排序的方法。 这些排序函数实现不同的排序算法,每个排序算法的特征在于执行速度,最坏情况性能,所需的工作空间和算法的稳定性。 下表显示了三种排序算法的比较。

05 唯一值与其他集合逻辑

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]))

结果如下:

转载于:https://my.oschina.net/u/3938912/blog/3100675

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值