python数据分析(四) python numpy--函数和数组运算

1.数组当中的函数

通用函数是一种对ndarray中的数据执行元素级运算的函数。数组当中的函数与python当中内置的函数没有什么太大的区别,区别就是数组当中的函数可以对数组当中的每一个值进行函数运算不需要编写循环(矢量化)。

一元函数

接受一个数组进行运算的函数叫做一元函数,如sqrt,exp

In [4]: arr=np.arange(10)

In [5]: arr
Out[5]: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

In [6]: np.sqrt(arr)
Out[6]:
array([0.        , 1.        , 1.41421356, 1.73205081, 2.        ,
       2.23606798, 2.44948974, 2.64575131, 2.82842712, 3.        ])

In [7]: np.exp(arr)
Out[7]:
array([1.00000000e+00, 2.71828183e+00, 7.38905610e+00, 2.00855369e+01,
       5.45981500e+01, 1.48413159e+02, 4.03428793e+02, 1.09663316e+03,
       2.98095799e+03, 8.10308393e+03])

二元函数

另外一些函数接受两个数组并返回一个结果数组。如add,maxium。同时还带有一个out参数,能够将运算结果直接赋予其中一个数组,不必在内存当中在进行一次copy操作

In [21]: np.maximum(a,b)
Out[21]:
array([ 1.0166274 ,  0.43801254,  1.43846716,  1.01247244,  0.80244409,
        0.31912314, -0.42904361])

In [22]: np.maximum(a,b,out=a)
Out[22]:
array([ 1.0166274 ,  0.43801254,  1.43846716,  1.01247244,  0.80244409,
        0.31912314, -0.42904361])

In [23]: a
Out[23]:
array([ 1.0166274 ,  0.43801254,  1.43846716,  1.01247244,  0.80244409,
        0.31912314, -0.42904361])

常见一元和二元函数

Numpy.where函数

numpy.where 是三元表达式x if condition else y的矢量化版本,具体用法是np.where(cond,xarr,yarr),条件为真则引用第一个数组,条件为假则引用第二个数组

以下是一个例子,将数组当中大于0的值替换为2,小于0的值替换为-2:

In [26]: f
Out[26]:
array([[-0.45507675, -1.54076971, -1.01814123, -0.18394114],
       [ 0.12222621,  1.33999903,  0.16996622, -1.36640899],
       [ 1.09578869,  0.60744966, -0.99855471,  1.11188253],
       [-0.0239628 ,  1.96097014, -0.25486583,  0.37161357]])

In [27]: np.where(f>0,2,-2)
Out[27]:
array([[-2, -2, -2, -2],
       [ 2,  2,  2, -2],
       [ 2,  2, -2,  2],
       [-2,  2, -2,  2]])

基本数组统计方法

可以通过数组上的一组数学函数对整个数组或者数组当中的某个轴的数据进行计算。获得该数组的统计信息。例如求和,平均数,标准差std。

这些函数既可以当做数组的实例方法使用,也可以当做顶级Numpy函数使用。关于axis,教给大家一个0列一行,当你想要行的数值则axis=1,否则为0.

In [32]: f
Out[32]:
array([[-0.45507675, -1.54076971, -1.01814123, -0.18394114],
       [ 0.12222621,  1.33999903,  0.16996622, -1.36640899],
       [ 1.09578869,  0.60744966, -0.99855471,  1.11188253],
       [-0.0239628 ,  1.96097014, -0.25486583,  0.37161357]])

In [28]: f.sum()
Out[28]: 0.9381748961800813

In [29]: np.sum(f)
Out[29]: 0.9381748961800813

In [30]: np.mean(f,axis=1)
Out[30]: array([-0.79948221,  0.06644562,  0.45414154,  0.51343877])

In [31]: np.sum(f,axis=1)
Out[31]: array([-3.19792883,  0.26578247,  1.81656618,  2.05375508])

数组统计方法

布尔数组方法 any all

在数组当中的布尔值会被当做1和0,所以当你想要获得数组当中有多少为真可以这样做(arr>0).sum(),any和all 用来检测数组当中的布尔值。

all()函数

检查行或者列当中的 bool值是否全部都是True 或者False

any()函数

检查当中是否有为True的值

这两个返回一个布尔值

In [32]: f
Out[32]:
array([[-0.45507675, -1.54076971, -1.01814123, -0.18394114],
       [ 0.12222621,  1.33999903,  0.16996622, -1.36640899],
       [ 1.09578869,  0.60744966, -0.99855471,  1.11188253],
       [-0.0239628 ,  1.96097014, -0.25486583,  0.37161357]])

In [33]: (f>0).any()
Out[33]: True

In [34]: (f>0).all()
Out[34]: False

数组的排序

像python当中的list,tuple,dict等一样,数组同样具有排序方法,需要注意的是

sort作为内置方法时,通常是对数组本身进行排序,不会生成一个新的数组

In [36]: f
Out[36]:
array([[-1.54076971, -1.01814123, -0.45507675, -0.18394114],
       [-1.36640899,  0.12222621,  0.16996622,  1.33999903],
       [-0.99855471,  0.60744966,  1.09578869,  1.11188253],
       [-0.25486583, -0.0239628 ,  0.37161357,  1.96097014]])

In [37]: m=f.sort()

In [38]: m

In [39]:

In [39]:

作为numpy的顶级方法使用时,会返还一个新的数组

In [39]: m=np.sort(f)

In [40]: m
Out[40]:
array([[-1.54076971, -1.01814123, -0.45507675, -0.18394114],
       [-1.36640899,  0.12222621,  0.16996622,  1.33999903],
       [-0.99855471,  0.60744966,  1.09578869,  1.11188253],
       [-0.25486583, -0.0239628 ,  0.37161357,  1.96097014]])

原文地址:https://www.cnblogs.com/xiaosanye/p/12011432.html

时间: 2024-10-08 07:04:28

python数据分析(四) python numpy--函数和数组运算的相关文章

四、Numpy基础:数组运算

h2 { font-size: 24px; height: 35px; line-height: 35px !important; width: 95%; background-color: #169FE6; padding-left: 10px; color: white } table { border: 1px solid #d3d3d3; background: #fefefe; width: 90% } th,td { padding: 0.5% 1% 0.5% } th { back

《利用Python进行数据分析·第2版》第四章 Numpy基础:数组和矢量计算

<利用Python进行数据分析·第2版>第四章 Numpy基础:数组和矢量计算 numpy高效处理大数组的数据原因: numpy是在一个连续的内存块中存储数据,独立于其他python内置对象.其C语言编写的算法库可以操作内存而不必进行其他工作.比起内置序列,使用的内存更少(即时间更快,空间更少) numpy可以在整个数组上执行复杂的计算,而不需要借助python的for循环 4.0 前提知识 数据:结构化的数据代指所有的通用数据,如表格型,多维数组,关键列,时间序列等 相关包:numpy pa

《利用python进行数据分析》读书笔记--第四章 numpy基础:数组和矢量计算

第四章 Numpy基础:数组和矢量计算 实话说,用numpy的主要目的在于应用矢量化运算.Numpy并没有多么高级的数据分析功能,理解Numpy和面向数组的计算能有助于理解后面的pandas.按照课本的说法,作者关心的功能主要集中于: 用于数据整理和清理.子集构造和过滤.转换等快速的矢量化运算 常用的数组解法,如排序.唯一化.集合运算等 高效的描述统计和数据聚合/摘要运算 用于异构数据集的合并/连接运算的数据对齐和关系型数据运算 将条件逻辑表述为数组表达式(而不是带有if-elif-else分支

Numpy学习:《Python数据分析基础教程NumPy学习指南第2版》中文PDF+英文PDF+代码

NumPy是一个优秀的科学计算库,提供了很多实用的数学函数.强大的多维数组对象和优异的计算性能,不仅可以取代Matlab和Mathematica的许多功能,而且业已成为Python科学计算生态系统的重要组成部分.但与这些商业产品不同,它是免费的开源软件. 推荐学习<Python数据分析基础教程NumPy学习指南第2版>,通过书中丰富的示例,学会Matplotlib绘图,并结合使用其他Python科学计算库(如SciPy和Scikits),让工作更有成效,让代码更加简洁而高效. 学习参考: &l

python数据分析进阶之numpy

摘要 Numpy是利用python来进行数据分析中必须要掌握的基础.是高性能科学计算和数据分析的基础包.利用numpy能对整组数据无需循环就能进行快速的标准数学函数计算,同时能进行线性代数,随机数,以及傅里叶变换等等功能,而对于数据分析来说,比较重要的用途就是数据的清理,过滤,子集构造,转换,排序,描述统计等等. 创建多维数组 1.利用array来生成基本数组,如: >>> import numpy as np >>> a=np.array([1,2,3,4]) >

python爬虫(四)--python正则表达式

在爬虫的学习过程中,又一个你必须要掌握的知识点就是正则表达式 爬虫程序需要爬取你需要的东西,那么就对爬取的结果进行筛选,正则表达式就起到这样的作用 如果你学过任何一门语言,相信你都会接触正则表达式.并且正则表达式大多相同. 不管怎样,就像开头说的那样,因为这是爬虫基础教程.所以这篇文章要详细的说一下python的 正则表达式.开始进入正题吧. 正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配.Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正

【Python 数据分析】module ‘numpy‘ has no attribute ‘array‘

安装好Numpy模块后,开始做了几个小测试都可以运行,但是当我创建numpy.py这个文件后 numpy.py import numpy y = numpy.array([[11,4,2],[2,6,1],[32,6,42]]) print(y) 运行后报错了: Traceback (most recent call last):   File "D:\Python_Reptile\numpy.py", line 1, in <module>     import nump

【Python数据分析】Python模拟登录(一) requests.Session应用

最近由于某些原因,需要用到Python模拟登录网站,但是以前对这块并不了解,而且目标网站的登录方法较为复杂, 所以一下卡在这里了,于是我决定从简单的模拟开始,逐渐深入地研究下这块. 注:本文仅为交流学习所用. 登录特点:明文传输,有特殊标志数据 会话对象requests.Session能够跨请求地保持某些参数,比如cookies,即在同一个Session实例发出的所有请求都保持同一个cookies,而requests模块每次会自动处理cookies,这样就很方便地处理登录时的cookies问题.

Python 数据分析—第九章 数据聚合与分组运算

打算从后往前来做笔记 第九章 数据聚合与分组运算 分组 #生成数据,五行四列 df = pd.DataFrame({'key1':['a','a','b','b','a'], 'key2':['one','two','one','two','one'], 'data1':np.random.randn(5), 'data2':np.random.randn(5)}) df #可以按照key1分组计算data1的平均值 df.loc[:,'data1'].groupby(df.loc[:,'key

python数据分析简略介绍

1.Python以其开发效率著称,致力用最短的代码完成,但是开发效率并不高,被称为"胶水语言".含义是耗时的核心代码用C/C++等更高效的语言编写,然后用python来粘合,以此来解决python的运行效率问题.但在数据任务上,python的运行效率和C/C++已经差不多了. 2.python基本命令自己要注意的几点: print u'a不等于1'   #在输出中文前可以加上u 3.python中的数据结构 4个内建的数据结构:List.Tuple.Dictionary.Set,可以统