前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python基础——Numpy库超详细介绍+实例分析+附代码

Python基础——Numpy库超详细介绍+实例分析+附代码

作者头像
用户7886150
修改2021-01-07 10:26:00
1.4K0
修改2021-01-07 10:26:00
举报
文章被收录于专栏:bit哲学院

参考链接: Python中的numpy.tanh

1、NumPy简介 

NumPy是高性能科学计算和数据分析的基础包,计算速度要比python自带的函数快很多,非常好用。一般不需要安装,装Python就自动装了,如果需要: 

pip3 install numpy

然后导出 

import numpy as np

2、常用方法 

2.1最常用的 

2.2更多 

array.shape & array的规格 array.ndim 数据的维数 array.dtype &array的数据规格 numpy.zeros(dim1,dim2) &创建dim1dim2的零矩阵 numpy.arange(start, stop, step, dtype = None) 返回一维的数组 numpy.eye(n) /numpy.identity(n) &创建nn单位矩阵 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行摘取出来,组成新数组 numpy.reshape(a,b) 将ab的一维数组排列为ab的形式 array([a,b,c,d],[d,e,f,g]) 返回一维数组,分别为[a,d],[b,e],[c,f],[d,g] array.T &array的转置 numpy.random.randn(a,b) & 生成a*b的随机数组 numpy.dot(matrix_1,matrix_2) &矩阵乘法 array.transpose( (1,0,2,etc.) ) & 对于高维数组,转置需要一个由轴编号组成的元组 

3、ndarray创建以及数据类型 

3.1 ndarray创建 

array() 将列表转换为数组,可选择显式指定dtype 

arange() range的numpy版,支持浮点数 linspace() 类似arange(),第三个参数为数组长度 zeros() 根据指定形状和dtype创建全0数组 ones() 根据指定形状和dtype创建全1数组 

**empty()**         

根据指定形状和dtype创建空数组(随机值)

**eye()**          

 根据指定边长和dtype创建单位矩阵

3.2 数据类型 

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

4、Numpy索引和切片 

4.1普通索引 

1 数组和标量之间的运算: 可以直接进行加减乘除的运算(对每一个元素进行) a+1 a*3 1//a a0.5 2 同样大小数组之间的运算: a+b a/b ab 3 数组的索引: 一维数组:a[5] 多维数组:a[2][3]或a[2,3] 4 数组的切片: 一维数组:a[3:6],a[:5] 多维数组:a[3:6,1:7],a[:,1:7] 注意:与列表不同,数组切片时并不会自动复制,在切片数组上的修改会影响原数组。 【解决方法:copy()】 

4.2 布尔索引 

1 给一个数组,选出数组中所有大于5的数? a[a>5] 

2 给一个数组,选出数组中所有大于5的偶数? a[(a>5)&(a%2==0)] 

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

4.3 花式索引 

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

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

5、NumPy:通用函数以及缺失值表示 

5.1一元函数 

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) 正切值 

5.2 二元函数: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) 元素级的真值逻辑运算 

5.3 缺失值表示 

numpy里有缺失值的表示方法 

m=np.nan

m==m

np.isnan(m)

 用~方法删除缺失值: 

d=np.array([m,1,3,0])

d[~np.isnan(d)]

六、NumPy:数学和统计方法 

常用函数: 

c = np.array([1.1,-2.9,3,4.6,5,4,7,8,-9.7,10])

sum 求和  cumsum 求前缀和  mean 求平均数 

std 求标准差 

var 求方差 

min 求最小值 

max 求最大值 

argmin 求最小值索引 

argmax 求最大值索引  

七、NumPy:随机数生成 

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

rand  给定形状产生随机数组(0到1之间的数)  randint  给定形状产生随机整数 

choice  给定形状产生随机选择  shuffle  与random.shuffle相同 

uniform  给定形状产生随机数组 

部分代码 

需要完整代码可评论。 

import numpy as np

x=np.array([[1.0,0.0,0.0],[0.,1.,2.]]) #定义了一个二维数组,大小为(2,3)

x

np.array([[1., 0., 0.],

       [0., 1., 2.]])

x.ndim   #数组维度数

2

x.shape    #数组的维数,返回的格式(n,m),其中n为行数,m为列数

(2, 3)

x.size    #数组元素的总数

6

x.dtype   #数组元素类型

np.dtype('float64')  #64位浮点型

x.itemsize  #每个元素占有的字节大小

8

x.data    #数组元素的缓冲区

'''索引'''

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

b = np.array([1,-2,3,4,5,4,7,8,-9,10])

np.sign(b)

np.modf(b)[0]#返回两个数组

c = np.array([1.1,-2.9,3,4.6,5,4,7,8,-9.7,10])

np.ceil(c)

np.floor(c)

#5.2

np.add(b,c)

np.subtract(b,c)

np.multiply(b,c)

np.maximum(b,c)

np.fmax(b,c)

np.mod(b,c)

np.logical_and(b,c)

#5.3

m=np.nan

m==m

np.isnan(m)

d=np.array([m,1,3,0])

d[~np.isnan(d)]

'''6'''

c = np.array([1.1,-2.9,3,4.6,5,4,7,8,-9.7,10])

np.sum(c)

np.cumsum(c)

np.mean(c)

np.argmin(c)

'''7'''

np.random.rand(3,2)

np.random.randint(3,4)

np.random.choice(3,4)

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档