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模块的基本使用的主要内容,如果未能解决你的问题,请参考以下文章