numpy

《数学分析基础笔记》

                         ——numpy、matplotlib、pandas的基础知识

1. 概念

numpy是数值计算的基础数据库,它其中包括了n维数组对象

2. 数组

2.1 创建

import numpy as np
#numpy读取数据
np.loadtxt(frame,dtype = np.float,delimiter = None,shiprows = 0,usecols = None,unpack = False)
# delimiter分隔符;dtype读取的数据类型;unpack为true有转置效果

#numpy中的转置,以下三种方法都可以
t.transpose()
t.T
t.swapaxes(1,0)

#使用numpy生成数组,类型为ndarray
t1 = np.array([1,2,3])
t2 = np.array(range(10))
t3 = np.arange(10)
#以上三种方式均可生成数组

#用dtype指定numpy中的数据类型
t4 = np.array(range(1,4),dtype = "float")

#调整数据类型
t5 = t4.astype("int8")

#修改浮点数的小数位数,例如取两位小数
np.round(b,2)

2.2 数组的形状

数组的轴
二维数组 axis = 0 表示行,axis = 1 表示列
三维数组 axis = 0 表示块,axis = 1 表示行,axis = 2 表示列

#了解数组的形状
a.shape()
#改变数组的形状
a.reshape()

小知识点:

  1. 三维形状(x,y,z)"x"表示块数,"y"表示行数,"z"表示列数
  2. a.reshape()并不会改变原数组,只会提供一个返回值,而a = a.reshape()才会改变原数组
  3. 二维数组变一维
    在知道数组中数字总数n的情况下
    a.reshape((n,))
    在不知道数组中数字总数n的情况下
    第一种方法:t6 = t5.reshape((t5.shape[0]*t5.shape[1]))
    第二种方法:t5.flatten()
    (flatten意为“展平”,将二维数组展平不就成一维的了)

2.3 数组的计算

形式还是比较简单的

#a,b都是数组
a + 2
a * 2 
a + b

理论部分的话有一个广播机制,即数组中的每个数都会受到运算影响

广播兼容:如果两个数组的后缘维度(即从末尾开始算起的维度)的轴长度相符或其中一方的长度为1,则认为它们是广播兼容的。广播会在缺失和(或)长度为1的维度上进行

3. 函数方法

3.1 索引和切片

#取行
print(t2[2])
#取连续多行
print(t2[2:])
#取不连续的多行
print(t2[[2,8,10]])
#取第一列
print(t2[:,0])
#取连续的多列
print(t2[:,2:])#取从第三列开始的每一列
#取不连续的多列
print(t[:,[0,2]])
#取行、列
print(t[2,3])#取3行4列的值
#取多行多列
print(t[2:5,1:4])#取第3行到第5行,第2列到第4列的值
#取多个不相邻的点
c = t[[0,2,2],[0,1,3]]#选出的结果是(0,0),(2,1),(2,3)

#数值修改,重新赋值
t[:,2:4] = 0
#boolen索引
t[t<10] = 3 #修改t中比10小的数值为3
#三元运算符
np.where(t<10,0,10) #t<10时修改为0,否则的话修改为10
#clip(裁剪)
t.clip(10,18) #小于10的替换为10,大于18的替换为18,但nan不能被替换

3.2 拼接

#竖直拼接
np.vstack((t1,t2))
#水平拼接
np.hstack((t1,t2))
#行交换
t[[1,2],:] = t[[2,1],:]
#列交换
t[:,[0,2]] = t[:,[2,0]]

#获取最大值最小值的位置
np.argmax(t,axis = 0)
np.argmin(t,axis = 1)
#创建一个全0的数组
np.zeros((3,4))
#创建一个全1的数组
np.ones((3,4))
#创建一个对角线为1的方阵
np.eye(3)

#生成随机数
np.rand()
np.randint(low,high,(shape))

小知识点:

  1. “a = b” 完全不复制,a和b相互影响
  2. “a = b[:]” 视图的操作,一种切片,会创建新的对象a,但是a的数据完全由b保管,他们两个的数据变化一致
  3. “a = b.copy()” b的数据复制到a,a和b互不影响

3.3 统计函数

(1)nan和inf

nan: 读取的本地文件为float时,若有缺失,就会出现nan,nan的类型为float类型

inf: 无穷大或无穷小

小知识点:

  1. 两个nan是不相等的
  2. 判断数组中nan的个数 np.count_nonzero(np.nan != np.nan)
  3. 判断一个数字是否为nan:np.isnan(a),返回bool类型(效果与np.nan != np.nan相同)
  4. 将nan替换为0:t[np.isnan(t)] = 0
  5. nan和任何值计算都为nan
(2)常用统计函数
#求和
t.sun(axis = None)
#均值
t.mean(a,axis = None)
#中值
t.median(t,axis = None)
#最大值
t.max(axis = None)
#最小值
t.min(axis = None)
#极值:max-min
np.ptp(t,axis = None)
#标准差:越大表示数据不稳定,波动较大
t.std(axis = None)

#默认返回多维数组全部的统计结果
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值