Numpy库入门与学习

简介

1.numpy优势

开源科学计算库,用于快速处理多个维度的数组,使用简洁高效,使用ndarray对象处理多维数组,该对象是一个快速灵活的大数据容器。其运算速度快是基于内存块存储风格,并行化运算,底层语言
由C语言编写,不受python解释器的限制,解除了GIL。

2.ndarry属性
名字解释
ndarry.shape数组维度元组
ndarry.ndim数组维度
ndarry.size数组中元素数量
ndarry.itemsize数组元素长度(字节)
ndarry.dtype数组元素类型
a=np.array(
[
    [
        [1,2,3],[3,4,5]
    ],
    [
        [1,2,3],[4,5,6]
    ]
])
a.shape
输出为(2,2,3),几个维度几个数字,由嵌套情况得到shape
a=np.array([1,5,6],dtype="float32")
a.dtype
输入为dtype('float32'),此为指定数据类型的方式,不指定
的话,整形默认为int64,浮点为float64
3.基本操作
包括ndarray.方法()和np.函数名()两种方式
3.1生成数组的方法
  • 生成0和1
    np.zeros(shape)
    np.ones(shape)
    例如
np.zeros(shape=(3,4))
输出为array([[ 0.,  0.,  0.,  0.],
   [ 0.,  0.,  0.,  0.],
   [ 0.,  0.,  0.,  0.]])
np.ones(shape=(2,4),dtype="float32")
输出为array([[ 1.,  1.,  1.,  1.],
   [ 1.,  1.,  1.,  1.]], dtype=float32)
  • 从现有数组中生成
    np.array()和np.copy 深拷贝,会跟随元数组变化
    np.asarray() 浅拷贝,不会跟随原数组变化
  • 生成固定范围数组
    np.linspace(0,10,100)
    [0,10]之间等距100个数
    np.arange(a,b,c)
    类似range(a,b,c),[a,b]之间,c个步长
  • 生成随机数组
    np.random模块
    1.均匀分布
    np.random.uniform(low,high,size)
    例如
data1=np.random.uniform(low=-1,high=1,size=1000000)
plt.figure(figsize=(20,8),dpi=80)
plt.hist(data1,1000)	#数据 组数
plt.show()

均匀分布
2.正态分布
两个参数μ和σ,代表数据的平均值和标准差
np.random.normal(loc=0.0,scale=1.0,size=None)

data2=np.random.normal(loc=1.75,scale=0.1,size=1000000)
plt.figure(figsize=(20,8),dpi=80)
plt.hist(data2,1000)
plt.show()

正态分布

3.2案例(数组的切片索引)
随机生成8支股票2周的交易日数据
data3=np.random.normal(loc=0,scale=1,size=(8,10))

#获取第一个股票前3个交易日的数据  索引
data3[0,0:3]

#行列反转  形状修改
#data3.reshape(10,8)     #只是重新分割,返回新的数组,不改变原始数组
#data3.resize(10,8)        #无返回值,对原始的数据更改,重新分割
data3.T                           #数组转置
3.2数组类型修改

ndarray.astype(type) 如ndarray.astype(“int32”);
ndarray序列化到本地
ndarray.tostring()

3.2数组去重
temp=np.array(
[
    [1,2,3,4],
    [3,4,5,6]
])
np.unique(temp)
输出为array([1, 2, 3, 4, 5, 6])
4.ndarray运算
4.1逻辑运算
data4=np.random.normal(loc=1.75,scale=0.1,size=1000000)
#逻辑判断,涨跌幅大于0.5标记为True,否则为False
data4>0.5
#布尔索引
data4[data4>0.5]
4.2通用判断函数

np.all(bool)
有一个False则返回False,都是True返回True
np.any()
有一个True则返回True,都是False返回False

4.3三元运算符

np.where(bool,True位置的值,False位置的值)
根据bool将数组化为布尔数组,再根据后两个参数将数组变为相应的值。
复合逻辑运算:
np.logical_and()和np.logical_or()
例如 np.logical_and(temp>0.5,temp<1)
np.logical_or(temp<-0.5,temp>0.5)

将temp<-0.5和temp>0.5之间的数置为1,其余为0
np.where(np.logical_or(temp<-0.5,temp>0.5),1,0)

4.4统计运算
  1. 统计指标函数
    np.min(),np.max(),np.mean(),np.median(),np.var(),np.std()
temp=np.array(
[
    [1,2,3,4],
    [3,4,5,6],
    [5,7,1,4],
    [2,8,5,3]
])
#按列求最大值
temp.max(axis=0)
#按行求最大值
np.max(temp,axis=1)

返回最大值,最小值的索引
np.argmax(temp,axis=)
np.argmin(temp,axis=)

5.数组间运算
5.1数组与数运算
temp=np.array(
[
    [1,2,3,4],
    [3,4,5,6],
    [5,7,1,4],
    [2,8,5,3]
])
#数组中每一个数加一
temp+1
5.2数组与数组运算

需要满足广播机制,只有满足以下两种情况才可进行数组间运算

  • 维度相等
  • shape(其中相对应的地方为1)
    例如
    矩阵运算
    反例
    反例
    程序
    程序
6.矩阵运算
6.1矩阵–二维数组

存储方法

  • ndarray数组
  • matrix数据结构
temp3=np.array(
[
    [1,2],
    [3,4],
    [5,7],
    [2,8]
])
temp4=np.mat(
[
    [1,2],
    [3,4],
    [5,7],
    [2,8]
])
6.2矩阵乘法

形状:(m,n)*(n,l)=(m,l)
ndarray存储相乘的方法:

  • np.matmul()
  • np.dot()
    matrix存储相乘
  • matrix1*matrix2
#ndarray存储
temp3=np.array(
[
    [1,2],
    [3,4],
    [5,7],
    [2,8]
])
temp4=np.array(
[
    [1,2,3,4],
    [3,4,3,2],
])
np.matmul(temp3,temp4)
np.dot(temp3,temp4)

#matrix相乘
matrix1=np.mat(temp3)
matrix2=np.mat(
[    [1,2,3,4],
    [3,4,3,2],])
matrix1*matrix2
7.合并与分割
7.1合并
  • np.hstack(a1,a2) colum拼接
  • np.vstack(a1,a2) row拼接
  • np.concatenate((a1,a2,…),axis=0) //竖直拼接 列
  • np.concatenate((a1,a2,…),axis=1) //水平拼接 行
    拼接
7.2分割
  • np.split()
    分割
8.IO操作与数据处理
8.1 读取文件

不适合读取,不支持字符串读取,一般用PANDAS

  • test=np.genfromtxt(“test.csv”,delimiter=’,’) 路径名 分隔符
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值