numpy模块的基本使用

Posted sheppard

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了numpy模块的基本使用相关的知识,希望对你有一定的参考价值。

基础相关

narray数组创建

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

常用的属性

属性 描述
T 数组的转置(对高维数组而言)
dtype 数组元素的数据类型
size 数组元素的个数
ndim 数组的维数
shape 数组的维度大小(以元组形式)
itemsize 每个项占用的字节数
nbytes 数组中的所有数据消耗掉的字节数

数据类型(dtype)

类型 描述
布尔型 bool_
整型 int_ int8 int16 int32 int 64
无符号整型 uint8 uint16 uint32 uint64
浮点型 float_ float16 float32 float64

进阶知识

range与arange

共同点

? 都有start,end(不顾尾),step三个参数

不同点

? arange返回的是一个ndarray(N维数组)

? range返回的是一个list

? arange允许步长为小数,range只支持整数

In [24]:

range(2,8,2)

Out[24]:

range(2, 8, 2)

In [26]:

np.arange(2,8,2)

Out[26]:

array([2, 4, 6])

向量化数学运算

*参考矩阵运算

数组与标量运算

直接做加减乘除即可,略

数组运算(shape必须相同)

索引与切片

索引

*一维数组的索引与列表没有区别,接下来主要针对多维数组.

数组重塑(reshape)

In [41]:

a4=np.random.randint(0,3,size=(2,3))
a4

Out[41]:

array([[1, 0, 2],
       [1, 1, 2]])

In [44]:

a4.reshape(1,6)

Out[44]:

array([[1, 0, 2, 1, 1, 2]])

In [45]:

a4.reshape(1,-1) #-1相当于占位符,系统会自动算出

Out[45]:

array([[1, 0, 2, 1, 1, 2]])

In [46]:

a4.reshape(1,-1).reshape(2,-1)

Out[46]:

array([[1, 0, 2],
       [1, 1, 2]])

切片

In [116]:

a4

Out[116]:

array([[1, 0, 2],
       [1, 1, 2]])

In [117]:

a4[:,1:2]

Out[117]:

array([[0],
       [1]])

In [118]:

a4[0:1]

Out[118]:

array([[1, 0, 2]])

数组的行互换

In [120]:

a=np.array([[1,2,3],[4,5,6]])
a=a[::-1,:]
a

Out[120]:

array([[4, 5, 6],
       [1, 2, 3]])

布尔型索引

In [129]:

c=np.eye(5,dtype=int).reshape(5,-1)
c

Out[129]:

array([[1, 0, 0, 0, 0],
       [0, 1, 0, 0, 0],
       [0, 0, 1, 0, 0],
       [0, 0, 0, 1, 0],
       [0, 0, 0, 0, 1]])

In [131]:

c==1

Out[131]:

array([[ True, False, False, False, False],
       [False,  True, False, False, False],
       [False, False,  True, False, False],
       [False, False, False,  True, False],
       [False, False, False, False,  True]])

*花式索引

In [131]:

b=np.arange(32).reshape((8,4))
b

Out[131]:

array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11],
       [12, 13, 14, 15],
       [16, 17, 18, 19],
       [20, 21, 22, 23],
       [24, 25, 26, 27],
       [28, 29, 30, 31]])

In [132]:

b[[1,3,5,7],[1,2,1,2]] 
#取出索引1,3,5,7行,在索引为1的行中取出索引为1的列,在索引为3的行中取出索引为2的列,在索引为5的行中取出#索引为1的列,在索引为7的行中取出索引为2的列

Out[132]:

array([ 5, 14, 21, 30])

数组转置以及轴对换

数组转置(返回的是视图,而非源)

arr.transpose()或者arr.T
对于高维数组,transpose需要得到一个由轴编号组成的元组(有点烧脑)

轴对换(返回的是视图,而非源)

swapaes(),需要接受轴编号

通用函数

一元函数

函数 功能
abs、fabs 分别是计算整数和浮点数的绝对值
sqrt 计算各元素的平方根
square 计算各元素的平方
exp 计算各元素的指数e**x
log 计算自然对数
sign 计算各元素的正负号
ceil 计算各元素的ceiling值
floor 计算各元素floor值,即小于等于该值的最大整数
rint 计算各元素的值四舍五入到最接近的整数,保留dtype
modf 将数组的小数部分和整数部分以两个独立数组的形式返回,与Python的divmod方法类似
isnan 判断数组中的缺失值
isinf 表示那些元素是无穷的布尔型数组
cos,sin,tan 普通型和双曲型三角函数

二元函数

函数 功能
add 将数组中对应的元素相加
subtract 从第一个数组中减去第二个数组中的元素
multiply 数组元素相乘
divide、floor_divide 除法或向下圆整除法(舍弃余数)
power 对第一个数组中的元素A,根据第二个数组中的相应元素B计算A**B
maximum,fmax 计算最大值,fmax忽略NAN
miximum,fmix 计算最小值,fmin忽略NAN
mod 元素的求模计算(除法的余数)

数学统计方法

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

随机数

函数 功能
rand 返回给定维度的随机数组(0到1之间的数)
randn 返回给定维度的随机数组
randint 返回给定区间的随机整数
choice 给定的一维数组中随机选择
shuffle 原列表上将元素打乱(与random.shuffle相同)
uniform 给定形状产生随机数组
seed 设定随机种子(使相同参数生成的随机数相同)
standard_normal 生成正态分布的随机样本数

以上是关于numpy模块的基本使用的主要内容,如果未能解决你的问题,请参考以下文章

0929课堂小结

如何使用模块化代码片段中的LeakCanary检测内存泄漏?

科学计算基础软件包NumPy入门讲座:基本概念

二快速上手数组计算模块 Numpy

对数据进行去均值并转换为 numpy 数组

利用numpy实现数据基本操作