数据分析-Numpy

什么是Numpy

NumPy这个词来源于两个单词-- Numerical和Python。 NumPy是Python中的一个运算速度非常快的一个数学库,它非常重视数组,很多的数据科学的包都是依赖于Numpy的。它允许你在Python中进行向量和矩阵计算,并且由于许多底层函数实际上是用C编写的,因此你可以体验在原生Python中永远无法体验到的速度。

安装

pip install numpy

ndarray

numpy所有的操作都是围绕着数组展开的,这个数组的名字就叫做 ndarray ,在学习ndarray数组之前肯定有人会说这个东西和Python中的列表差不多啊,为什么不用列表呢,列表还要方便些。但是事实上通过ndarray不管是方便还是效率都远远地提升了。

ndarray数组创建

数组内的元素类型必须一致

数组大小不可修改

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

lis = [1,2,3,4,5]
np.array(lis)
array([1, 2, 3, 4, 5])

np.arange(10)
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
np.arange(0.5,10.5,1)
array([0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 8.5, 9.5])

#取范围内的n个数,差值相同
np.linspace(1,10,10)
array([ 1.,  2.,  3.,  4.,  5.,  6.,  7.,  8.,  9., 10.])

np.zeros((2,2))
array([[0., 0.],
       [0., 0.]])

#ones和empty和zeros类似,但是empty会优先找内存中的数据,不一定是随机的

np.eye(4,4)
array([[1., 0., 0., 0.],
       [0., 1., 0., 0.],
       [0., 0., 1., 0.],
       [0., 0., 0., 1.]])

常用属性

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

数据类型

dtype

类型 描述
布尔型 bool_
整型 int_ int8 int16 int32 int 64
无符号整型 uint8 uint16 uint32 uint64
浮点型 float_ float16 float32 float64
#查看数据类型
zx = np.ones((10,10))
zx.dtype
dtype('float64')

#修改数据类型
data = zx.astype(np.int16)
data.dtype
dtype('int16')

#注意
int8占1个字节,1字节(byte)占8位(bit)
 
其中最高位代表符号位 1-负号;0-正号
范围为1 1 1 1 1 1 1 1到0 1 1 1 1 1 1 1
1 0 0 0 0 0 0 为-128    0 0 0 0 0 0 0 0为0,一共256个数
范围-128-127

运算

#乘数字
z1 = [1,2,3,4,5,6]
z1 = np.array(z1)
z1 * 2
array([ 2,  4,  6,  8, 10, 12])

#乘数组,注意要一样的数组才能计算
z2 = [4,4,4,2,1,8]
z1 * z2
array([ 4,  8, 12,  8,  5, 48])

#除此之外加减乘除类似

索引切片

#维度转换
data = np.ones((10))

#转2X5的二维
zx = data.reshape(2,5)
#转一维
zx.reshape(10)

切片,索引

zx=([[ 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]])

data = np.array(zx)
#0
data[0,0]
#8,9 14,15
data[1:3,2:4]
#3x3
data[:3,:3]
#步长2
data[::2,::2]

布尔型索引-筛选数据

#筛选大于5的数据
a[a>5]
他会把每一个数据和5比较,如果满足条件就返回数据

一元函数

函数 功能
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 生成正态分布的随机样本数

参考链接

https://www.cnblogs.com/xiaoyuanqujing/articles/11647031.html

posted @ 2020-01-15 18:56  zx125  阅读(182)  评论(0编辑  收藏  举报