Numpy函数介绍

import numpy as np
#sqrt 计算各元素的平方根
arr = np.arange(10)
np.sqrt(arr)
array([0. , 1. , 1.41421356, 1.73205081, 2. ,
2.23606798, 2.44948974, 2.64575131, 2.82842712, 3. ]) # square 计算各元素的平方
arr1 = np.arange(10)
np.square(arr1)
array([ 0, 1, 4, 9, 16, 25, 36, 49, 64, 81], dtype=int32) # modf将数组的小数和整数部分以两个独立数组的形式返回
arr2 = np.array([1.22,3.55])
np.modf(arr2)
(array([0.22, 0.55]), array([1., 3.]))

利用数组进行数据处理

Numpy数组表达式代替循环,可以比等价的Python快上一两个数量级,这就是矢量化计算的强大手段。

points = np.arange(-5,5,0.01) # 1000个间隔相等的点
xs,ys = np.meshgrid(points,points)
xs
array([[-5. , -4.99, -4.98, ..., 4.97, 4.98, 4.99],
[-5. , -4.99, -4.98, ..., 4.97, 4.98, 4.99],
[-5. , -4.99, -4.98, ..., 4.97, 4.98, 4.99],
...,
[-5. , -4.99, -4.98, ..., 4.97, 4.98, 4.99],
[-5. , -4.99, -4.98, ..., 4.97, 4.98, 4.99],
[-5. , -4.99, -4.98, ..., 4.97, 4.98, 4.99]])
ys
array([[-5. , -5. , -5. , ..., -5. , -5. , -5. ],
[-4.99, -4.99, -4.99, ..., -4.99, -4.99, -4.99],
[-4.98, -4.98, -4.98, ..., -4.98, -4.98, -4.98],
...,
[ 4.97, 4.97, 4.97, ..., 4.97, 4.97, 4.97],
[ 4.98, 4.98, 4.98, ..., 4.98, 4.98, 4.98],
[ 4.99, 4.99, 4.99, ..., 4.99, 4.99, 4.99]]) z = np.sqrt(xs ** 2 + ys ** 2)
z
array([[7.07106781, 7.06400028, 7.05693985, ..., 7.04988652, 7.05693985,
7.06400028],
[7.06400028, 7.05692568, 7.04985815, ..., 7.04279774, 7.04985815,
7.05692568],
[7.05693985, 7.04985815, 7.04278354, ..., 7.03571603, 7.04278354,
7.04985815],
...,
[7.04988652, 7.04279774, 7.03571603, ..., 7.0286414 , 7.03571603,
7.04279774],
[7.05693985, 7.04985815, 7.04278354, ..., 7.03571603, 7.04278354,
7.04985815],
[7.06400028, 7.05692568, 7.04985815, ..., 7.04279774, 7.04985815,
7.05692568]]) import matplotlib.pyplot as plt
plt.imshow(z, cmap = plt.cm.gray);plt.colorbar()
plt.title("Image plot")

将条件逻辑表述为数组运算

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为True取xarr 否则取yarr
# 传统写法
result = [(x if c else y) for x,y,c in zip(xarr,yarr,cond)]
result
[1.1, 2.2, 1.3, 1.4, 2.5] # numpy做法
result1 = np.where(cond,xarr,yarr)
result1
array([1.1, 2.2, 1.3, 1.4, 2.5])

where闪亮登场

  • np.where(条件,真值,假值)
  • 传递给where的数组大小可以不相等,甚至是标量值
arr3 = np.random.randn(4, 4)
arr3
array([[ 0.6498161 , 0.35784392, -1.47023858, 1.09367264],
[-0.62756846, 0.23898718, 1.41371883, 0.48955242],
[-0.10017446, 0.24327529, 0.04354429, 0.80346031],
[-0.74234979, -0.11921036, -0.11432723, -0.37912988]]) result2 = np.where(arr3>0,2,-2)
result2
array([[ 2, 2, -2, 2],
[-2, 2, 2, 2],
[-2, 2, 2, 2],
[-2, -2, -2, -2]])
result3 = np.where(arr3>0,2,arr3)
result3
array([[ 2. , 2. , -1.47023858, 2. ],
[-0.62756846, 2. , 2. , 2. ],
[-0.10017446, 2. , 2. , 2. ],
[-0.74234979, -0.11921036, -0.11432723, -0.37912988]]) cond1 = np.array([True,True,False,False])
cond2 = np.array([True,False,True,False]) # 如果cond1和cond2都为真,则输出0,如果cond1为真,则输出1,如果cond2为真,则输出2,如果都是为假,则输出3
result4 = np.where(cond1 & cond2, 0, np.where(cond1, 1, np.where(cond2, 2, 3)))
result4
array([0, 1, 2, 3])

数学和统计方法

  • sum/mean/std等聚合计算(和,平均值,标准差)
test1 = np.array([[2,2,3,4,5],[6,7,8,9,10]])
test1 array([[ 2, 2, 3, 4, 5],
[ 6, 7, 8, 9, 10]])
np.mean(test1)
5.5 test1.sum()
55 test1.mean(axis=1)
array([3., 8.]) test1.mean(axis=0)
array([3.5, 4.5, 5.5, 6.5, 7.5]) test1.cumsum(0) # cumsum 所有元素的累计和 cumprod 所有元素的累计积
array([[ 2, 2, 3, 4, 5],
[ 8, 9, 11, 13, 15]], dtype=int32)
- axis轴,指的是维度 test1.std(axis=0) # 标准差
array([2. , 2.5, 2.5, 2.5, 2.5]) test1.var(axis=0) # 方差
array([4. , 6.25, 6.25, 6.25, 6.25]) test1.argmin(axis=0)
array([0, 0, 0, 0, 0], dtype=int64) test1.argmax(axis=0)
array([1, 1, 1, 1, 1], dtype=int64)

用于布尔型数组的方法

test2 = np.random.randn(100)
test2
array([ 0.25903273, 0.13939567, -0.10597059, 0.77790221, -0.76341781,
-0.61086865, 0.36002937, -0.1423488 , 1.69071728, 1.63576044,
0.39950296, 1.37198449, 0.454591 , -1.67927663, 0.73649581,
0.88126353, -1.82159175, -0.46323513, -0.30399076, 2.16435963,
-0.79892847, 0.05767935, 0.45429729, 0.96934967, -0.78818112,
-0.8438922 , 0.31373184, 0.05242094, 0.2332054 , 0.26647064,
1.56850088, 0.41425585, -1.62452194, -1.17165311, 0.23586585,
0.45476575, -0.57501697, 1.42377017, 0.00666962, 1.53916711,
0.508553 , -1.37573917, 0.51378532, 1.72682708, -0.76148258,
-1.19819233, -1.05367328, 1.0792924 , 0.80229908, 1.03273504,
0.71938515, 0.28893472, -0.08472809, 1.02170717, 0.03897593,
-0.0693723 , -0.60612239, -0.35538122, -1.09975843, 0.23485432,
-0.4513678 , -0.8119979 , -0.53072714, 1.02247374, 0.52980399,
-1.17365366, -0.4948684 , -0.81596822, 1.10386231, -1.10894077,
1.33491691, 0.21015349, -0.32206128, -0.33041407, -0.06815369,
2.27874416, -0.26642346, -0.95616127, -1.38222481, -0.89619146,
2.70433 , -1.8758817 , -1.61408998, -0.70112051, 0.63143197,
-0.5937125 , -0.82650637, 1.24456287, -0.61903984, -0.45140393,
0.25139079, -0.18882441, -0.61667939, 0.84566077, -1.08506887,
-0.45491845, -1.68915454, 0.58872177, -0.30961048, -0.43431663]) (test2 > 0).sum()
49 # any用于检测数组中是否存在True
bools = np.array([False,False,False,False])
bools.any()
False # all用于检测数组中所有值是否都是True
bools.all()
False

排序

sort()方法直接修改数组本身

test2 = np.array([11,55,33,44,88])
test2
array([11, 55, 33, 44, 88]) test2.sort()
test2
array([11, 33, 44, 55, 88]) test4 = np.array([[82,222,1,4,5],[62,72,8,93,10]])
test4
array([[ 82, 222, 1, 4, 5],
[ 62, 72, 8, 93, 10]]) # 最终的值排序
test4.sort(1)
test4
array([[ 1, 4, 5, 62, 72],
[ 8, 10, 82, 93, 222]]) # 两个位于同一0维度的值排序
test4.sort(0)
test4 array([[ 1, 4, 5, 62, 72],
[ 8, 10, 82, 93, 222]])

唯一化以及其他的集合逻辑

np.unique找出唯一值并返回已排序的结果

names = np.array(['Bob','Joe','Will','Bob','Will','Joe','Joe'])
np.unique(names)
array(['Bob', 'Joe', 'Will'], dtype='<U4')

是1不是l

方法 说明
unique(x) 计算x中的唯一元素,并返回有序结果
intersect1d(x,y) x和y的公共元素
union1d(x,y) 计算x和y的并集
in1d(x,y) 得到一个表示"x的元素是否包含于y"的布尔型数组
setdiff1d(x,y) 集合的差,即元素在x中且不再y中
setxor1d(x,y) 集合的对称差,存在一个数组中,但不同时存在于两个数组中的元素
values = np.array([6,0,0,3,2,5,6])
np.in1d(values,[2,3,6])
array([ True, False, False, True, True, False, True])

Numpy数据处理函数的更多相关文章

  1. Python数据分析--Numpy常用函数介绍(4)--Numpy中的线性关系和数据修剪压缩

    摘要:总结股票均线计算原理--线性关系,也是以后大数据处理的基础之一,NumPy的 linalg 包是专门用于线性代数计算的.作一个假设,就是一个价格可以根据N个之前的价格利用线性模型计算得出. 前一 ...

  2. MySQL数据处理函数

    数据处理函数 有时从数据库表中获取到的数据须要进行一些处理. 如将小写字母替换为对应的大写字母.这个处理过程能够在客户机上进行.也能够在数据库上进行. 数据库上进行会更高效.数据库中有对应的数据处理函 ...

  3. R语言学习 第八篇:常用的数据处理函数

    Basic包是R语言预装的开发包,包含了常用的数据处理函数,可以对数据进行简单地清理和转换,也可以在使用其他转换函数之前,对数据进行预处理,必须熟练掌握常用的数据处理函数,本文分享在数据处理时,经常使 ...

  4. 006 numpy常用函数

    属于Numpy的函数. 一:通用函数 1.说明 是一种对ndarray中的数据执行元素级运算的函数. 2.一元函数 3.二元函数 二:矢量计算 1.numpy.where 主要有两种用法 np.whe ...

  5. NumPy 数学函数

    NumPy 数学函数 NumPy 包含大量的各种数学运算的函数,包括三角函数,算术运算的函数,复数处理函数等. 三角函数 NumPy 提供了标准的三角函数:sin().cos().tan(). 实例 ...

  6. NumPy 字符串函数

    NumPy 字符串函数 以下函数用于对 dtype 为 numpy.string_ 或 numpy.unicode_ 的数组执行向量化字符串操作. 它们基于 Python 内置库中的标准字符串函数. ...

  7. Python中numpy.apply_along_axis()函数的用法

    numpy.apply_along_axis(func, axis, arr, *args, **kwargs): 必选参数:func,axis,arr.其中func是我们自定义的一个函数,函数fun ...

  8. numpy常用函数学习

    目录numpy常用函数学习点乘法线型预测线性拟合裁剪.压缩和累乘相关性多项式拟合提取符号数组杂项点乘法该方法为数学方法,但是在numpy使用的时候略坑.numpy的点乘为a.dot(b)或numpy. ...

  9. numpy.rollaxis函数

    numpy.rollaxis numpy.rollaxis 函数向后滚动特定的轴到一个特定位置,格式如下: numpy.rollaxis(arr, axis, start) 参数说明: arr:数组 ...

随机推荐

  1. 10.Ubuntu操作系统及python2.7、3.5 exe

    Ubuntu操作系统 链接:https://pan.baidu.com/s/1cu_eYN1GnW5EwVYrXMJbEg 密码:advq python-3.5.3_32位 链接:https://pa ...

  2. DataBinding(一)DataBinding初认识

    参考DataBinding系列(一):DataBinding初认识 早在2015谷歌 I/O大会上,就介绍了一个新的框架DataBinding,从名字就可以看出来,这是一个数据绑定框架.我们为什么要使 ...

  3. Redis 常见配置

  4. 机器学习进阶-图像特征harris-角点检测 1.cv2.cornerHarris(进行角点检测)

    1.cv2.cornerHarris(gray, 2, 3, 0.04)  # 找出图像中的角点 参数说明:gray表示输入的灰度图,2表示进行角点移动的卷积框,3表示后续进行梯度计算的sobel算子 ...

  5. LeetCode题解 Permutations II 和 Permutations I ——回溯算法

    这个算法感觉还是很陌生的.算法导论里没有讲这个算法,而数据结构与算法分析只用了一节来阐述.我居然跳过去了..尴尬. 笨方法解决的: 第一题: 给定一个元素不重复的数组,枚举出他们的全排列. 方法1:递 ...

  6. jquery_ajax 地址三级联动

    jquery 的三级地址联动,原理与javascript类似,只是在触发请求的时候,使用封装好的 $.get ,$post,$.ajax 方法去执行,其余的都是一样的,后台服务器请求文件是一样的,前台 ...

  7. 【动态规划】最大子段和问题,最大子矩阵和问题,最大m子段和问题

    http://blog.csdn.net/liufeng_king/article/details/8632430 1.最大子段和问题      问题定义:对于给定序列a1,a2,a3……an,寻找它 ...

  8. intellij idea 配置web 项目

    Intellij Idea 创建Web项目入门(一)(转载)   相关软件: Intellij Idea14:http://pan.baidu.com/s/1nu16VyD JDK7:http://p ...

  9. window 服务

    c#写windows服务   序言 前段时间做一个数据迁移项目,刚开始用B/S架构做的项目,但B/S要寄存在IIs中,而IIs又不稳定因素,如果重启IIs就要打开页面才能运行项目.有不便之处,就改用W ...

  10. 转:HTML5页面如何在手机端浏览器调用相机、相册功能

    HTML5页面如何在手机端浏览器调用相机.相册功能 开发微信端浏览器访问的HTML5的页面,页面中有一个<input id="input" type="file&q ...