Numpy库使用

一、NumPy:数组计算

1、NumPy是高性能科学计算和数据分析的基础包。它是pandas等其他各种工具的基础。

2、NumPy的主要功能:

  • ndarray,一个多维数组结构,高效且节省空间
  • 无需循环对整组数据进行快速运算的数学函数
  • *读写磁盘数据的工具以及用于操作内存映射文件的工具
  • *线性代数、随机数生成和傅里叶变换功能
  • *用于集成C、C++等代码的工具

3、安装方法:pip install numpy
4、引用方式:import numpy as np

二、NumPy:ndarray-多维数组对象

1、创建ndarray:np.array()

2、ndarray是多维数组结构,与列表的区别是:

  • 数组对象内的元素类型必须相同
  • 数组大小不可修改

3、常用属性:

  • T 数组的转置(对高维数组而言)
  • dtype 数组元素的数据类型
  • size 数组元素的个数
  • ndim 数组的维数
  • shape 数组的维度大小(以元组形式)

4、常用方法

array.shape                         array的规格
array.ndim
array.dtype                         array的数据规格
numpy.zeros(dim1,dim2)              创建dim1*dim2的零矩阵
numpy.arange
numpy.eye(n) /numpy.identity(n)     创建n*n单位矩阵
numpy.array([…data…], dtype=float64 )
array.astype(numpy.float64)         更换矩阵的数据形式
array.astype(float)                 更换矩阵的数据形式
array * array                       矩阵点乘
array[a:b]                          切片
array.copy()                        得到ndarray的副本,而不是视图
array [a] [b]=array [ a, b ]        两者等价
name=np.array([‘bob‘,‘joe‘,‘will‘]) res=name==’bob’ res= array([ True, False, False], dtype=bool)
data[True,False,…..]                索引,只索取为True的部分,去掉False部分
通过布尔型索引选取数组中的数据,将总是创建数据的副本。
data[ [4,3,0,6] ]                   索引,将第4,3,0,6行摘取出来,组成新数组
data[-1]=data[data.__len__()-1]
numpy.reshape(a,b)                  将a*b的一维数组排列为a*b的形式
array([a,b,c,d],[d,e,f,g])          返回一维数组,分别为[a,d],[b,e],[c,f],[d,g]
array[ [a,b,c,d] ][:,[e,f,g,h] ]=array[ numpy.ix_( [a,b,c,d],[e,f,g,h] ) ]
array.T                             array的转置
numpy.random.randn(a,b)             生成a*b的随机数组
numpy.dot(matrix_1,matrix_2)        矩阵乘法
array.transpose( (1,0,2,etc.) )     对于高维数组,转置需要一个由轴编号组成的元组

三、NumPy:ndarray-数据类型

  • ndarray数据类型:dtype:
  • 布尔型:bool_
  • 整型:int_ int8 int16 int32 int64
  • 无符号整型:uint8 uint16 uint32 uint64
  • 浮点型:float_ float16 float32 float64
  • 复数型:complex_ complex64 complex128

四、NumPy:ndarray-创建

创建ndarray:
    array()         将列表转换为数组,可选择显式指定dtype
    arange()        range的numpy版,支持浮点数
    linspace()      类似arange(),第三个参数为数组长度
    zeros()         根据指定形状和dtype创建全0数组
    ones()          根据指定形状和dtype创建全1数组
    empty()         根据指定形状和dtype创建空数组(随机值)
    eye()           根据指定边长和dtype创建单位矩阵

五、NumPy:索引和切片

1、数组和标量之间的运算
    a+1    a*3    1//a    a**0.5
2、同样大小数组之间的运算
    a+b    a/b    a**b
3、数组的索引:
    一维数组:a[5]
    多维数组:
        列表式写法:a[2][3]
        新式写法:a[2,3] (推荐)
   数组的切片:
        一维数组:a[5:8]    a[4:]        a[2:10] = 1
        多维数组:a[1:2, 3:4]    a[:,3:5]        a[:,1]
4、强调:与列表不同,数组切片时并不会自动复制,在切片数组上的修改会影响原数组。    【解决方法:copy()】

六、NumPy:布尔型索引

问题:给一个数组,选出数组中所有大于5的数。
  答案:a[a>5]
  原理:
    a>5会对a中的每一个元素进行判断,返回一个布尔数组
    布尔型索引:将同样大小的布尔数组传进索引,会返回一个由所有True对应位置的元素的数组

问题2:给一个数组,选出数组中所有大于5的偶数。
问题3:给一个数组,选出数组中所有大于5的数和偶数。
  答案:
     a[(a>5) & (a%2==0)]
     a[(a>5) | (a%2==0)]

import numpy as npa = np.array([1,2,3,4,5,4,7,8,9,10])
a[a>5&(a%2==0)]  #注意加括号,不加括号错误,如下 输出:array([ 1, 2, 3, 4, 5, 4, 7, 8, 9, 10]) a[(a>5)&(a%2==0)] 输出:array([ 8, 10])

七、NumPy:花式索引*

问题1:对于一个数组,选出其第1,3,4,6,7个元素,组成新的二维数组。
答案:a[[1,3,4,6,7]]

问题2:对一个二维数组,选出其第一列和第三列,组成新的二维数组。
答案:a[:,[1,3]]

八、NumPy:通用函数’

通用函数:能同时对数组中所有元素进行运算的函数

常见通用函数:

一元函数:abs, sqrt, exp, log, ceil,

numpy.sqrt(array)                   平方根函数
numpy.exp(array)                    e^array[i]的数组
numpy.abs/fabs(array)               计算绝对值
numpy.square(array)                 计算各元素的平方 等于array**2
numpy.log/log10/log2(array)         计算各元素的各种对数
numpy.sign(array)                   计算各元素正负号
numpy.isnan(array)                  计算各元素是否为NaN
numpy.isinf(array)                  计算各元素是否为NaN
numpy.cos/cosh/sin/sinh/tan/tanh(array) 三角函数
numpy.modf(array)                   将array中值得整数和小数分离,作两个数组返回
numpy.ceil(array)                   向上取整,也就是取比这个数大的整数
numpy.floor(array)                  向下取整,也就是取比这个数小的整数
numpy.rint(array)                   四舍五入
numpy.trunc(array)                  向0取整
numpy.cos(array)                    正弦值
numpy.sin(array)                    余弦值
numpy.tan(array)                    正切值 

二元函数:add, substract, multiply,

numpy.add(array1,array2)            元素级加法
numpy.subtract(array1,array2)       元素级减法
numpy.multiply(array1,array2)       元素级乘法
numpy.divide(array1,array2)         元素级除法 array1/array2
numpy.power(array1,array2)          元素级指数 array1^array2
numpy.maximum/minimum(array1,aray2) 元素级最大值
numpy.fmax/fmin(array1,array2)      元素级最大值,忽略NaN
numpy.mod(array1,array2)            元素级求模
numpy.copysign(array1,array2)       将第二个数组中值得符号复制给第一个数组中值
numpy.greater/greater_equal/less/less_equal/equal/not_equal (array1,array2)
元素级比较运算,产生布尔数组
numpy.logical_end/logical_or/logic_xor(array1,array2)元素级的真值逻辑运算

九、补充知识:浮点数特殊值

1、浮点数:float
2、浮点数有两个特殊值:

  • nan(Not a Number):不等于任何浮点数(nan != nan)
  • inf(infinity):比任何浮点数都大

2、NumPy中创建特殊值:np.nan np.inf

3、在数据分析中,nan常被用作表示数据缺失值

既然nan连自己都不相等,那么怎么判断是不是NAN呢?
用a==a 只要返回False就能判断

十、NumPy:数学和统计方法

常用函数:

  • sum 求和
  • cumsum 求前缀和
  • mean 求平均数
  • std 求标准差
  • var 求方差
  • min 求最小值
  • max 求最大值
  • argmin 求最小值索引
  • argmax 求最大值索引

十一、NumPy:随机数生成

随机数生成函数在np.random子包内
常用函数

    • rand 给定形状产生随机数组(0到1之间的数)
    • randint 给定形状产生随机整数
    • choice 给定形状产生随机选择
    • shuffle 与random.shuffle相同
    • uniform 给定形状产生随机数组

原文地址:https://www.cnblogs.com/lujiacheng-Python/p/10364574.html

时间: 2024-10-29 19:51:28

Numpy库使用的相关文章

数据分析之Numpy库入门

1.列表与数组 在python的基础语言部分,我们并没有介绍数组类型,但是像C.Java等语言都是有数组类型的,那python中的列表和数组有何区别呢? 一维数据:都表示一组数据的有序结构 区别: 列表:数据类型可以不同,如:[3.1413,'pi',3.1404,[3.1402,2.34],'3.2376'] 数组:数据类型相同 .如[3.14,34.34,3433.3,343.23] 二维数据:二维数据由多个一维数据构成,是一维数据的集合形式!表格是典型的二维数据! 注意:表格的表头,可以是

Numpy库进阶教程(二)

第一篇在这里:Numpy库进阶教程(一)求解线性方程组 求解特征值和特征向量 关于特征值和特征向量的介绍,可以点击这里 首先创建一个矩阵 In [1]: A=mat("3 -2;1 0") In [2]: A Out[2]: matrix([[ 3, -2], [ 1, 0]]) 在numpy.linalg模块中,eigvals函数可以计算矩阵的特征值,而eig函数可以返回一个包含特征值和对应特征向量的元组. 使用eigvals函数求解特征值 In [3]: linalg.eigval

数据分析与展示——NumPy库入门

这是我学习北京理工大学嵩天老师的<Python数据分析与展示>课程的笔记.嵩老师的课程重点突出.层次分明,在这里特别感谢嵩老师的精彩讲解. NumPy库入门 数据的维度 维度是一组数据的组织形式.数据维度就是在数据之间形成特定关系表达多种含义的一个概念. 一维数据: 一维数据由对等关系的有序或无序数据构成,采用线性方式组织.对应列表.数组和集合等概念. 列表和数组:一组数据的有序结构. 区别: 列表:数据类型可以不同 数组:数据类型相同 二维数据: 二维数据由多个一维数据构成,是一维数据的组合

Panda和numpy库和matplotlib库的安装

好久没有用python了 论文决定使用python 朴素贝叶斯和逻辑斯蒂 手生....连cmd命令都快忘记了 所以来重新复习一遍:cd C: 也就是在cmd中,可以敲打cd加上盘符的冒号就可以切换, 其次就是,使用pip install 下载包,但是要先进入Python27/Scpripts 才可以 而我是忘记了..直接在Python27里面用了...不过也没有提示我如何 只是说我的pip要更新  由于直接给出了一个命令提示 ' python -m pip install --upgrade p

python数据分析实战-第3章-numpy库

第3章 NumPy库 32 3.1 NumPy简史 32 3.2 NumPy安装 32 3.3 ndarray:NumPy库的心脏 33 1 import numpy as np 1 a = np.array([1, 2, 3]) 1 a array([1, 2, 3]) 1 type(a), a.dtype, a.ndim, a.size, a.shape, a.itemsize (numpy.ndarray, dtype('int64'), 1, 3, (3,), 8) 1 b = np.a

python——Numpy库

Numpy库 英文官方文档:https://docs.scipy.org/doc/numpy/reference/arrays.ndarray.html Numpy库中的数组对象:N维数组类型:ndarray 1)      ndarray的作用: a)      数组对象性可以去掉元素间运算所需的循环,使一维向量更像单个数据. b)     设置专门的数组对象,经过优化,可以提升这类应用的运算速度. 2)      ndarray是一个多维数组对象,有两部分组成: 实际的数据 和 描述这些数据

NumPy库实现矩阵计算

随着机器学习技术越来越向着整个社会进行推广,因此学好线性代数和Python当中的numpy库就相当重要了.我们应该知道numpy库的使用是sklearn库和opencv库的基础.主要用于矩阵的计算.当然,我们做做数模或者人工神经网络建模也可以使用MATLAB.不过现在Python才是现在的主流,因为Python可以用于服务器后台的实现,不仅仅看可以用于科研,还可以做出一些比较实用的一些东西.如果还想用于物联网等领域的话,则可以使用C++进行算法的实现.因为我们在嵌入式开发当中,一般使用的是lin

Numpy库的学习(一)

今天来学习一下Python库中,支持高级大量的维度数组与矩阵运算的神奇的Numpy库 Numpy同时也对数组运算提供大量的数学函数,对于大量计算运行效率极好 是大量机器学习框架的基础库 废话不多说,直接开整 Numpy中最核心的结构就是ndarray数组 Numpy中定义的最重要的对象是成为ndarray的N维数组类型 它描述相同类型的元素集合.可以使用基于零的索引访问集合中的项目.大部分的数组操作仅仅是修改元数据部分,而不改变其底层的实际数据. 数组的维数称为秩,简单来说就是如果你需要获取数组

Numpy库的学习(五)

今天继续学习一下Numpy库,废话不多说,整起走 先说下Numpy中,经常会犯错的地方,就是数据的复制 这个问题不仅仅是在numpy中有,其他地方也同样会出现 import numpy as np a = np.arange(12) b = a print(b is a) b.shape = 3,4 print(a.shape) print(id(a)) print(id(b)) 先看看这段代码,我们随便建立了一个numpy数组 然后我想把a这个值,赋值给b,很简单的操作,b = a 那么我们打

用python的matplotlib和numpy库绘制股票K线均线和成交量的整合效果(含量化验证交易策略代码)

在用python的matplotlib和numpy库绘制股票K线均线的整合效果(含从网络接口爬取数据和验证交易策略代码)一文里,我讲述了通过爬虫接口得到股票数据并绘制出K线均线图形的方式,在本文里,将在此基础上再引入成交量效果图,并结合量价理论,给出并验证一些交易策略. 1 成交量对量化分析的意义 美国的股市分析家葛兰碧(Joe Granville)在他所著的<股票市场指标>一书里提出著名的“量价理论”.“量价理论”的核心思想是,任何对股价的分析,如果离开了对成交量的分析,都将是无本之木,无水