numpy学习

Numpy学习

numpy创建数组

import numpy as np

创建一个全0的数组: np.zeros((3,4))
创建一个全1的数组:np.ones((3,4))
创建一个对角线为1的正方形数组(方阵):np.eye(3)

采用np.array

a = np.array([1,2,3])

采用range

b = np.array(range(1,4))
c = np.arange(1,4)
b和c的效果相同
np.arange(start,stop,step,dtype=none)

numpy数据类型

在这里插入图片描述
选择适当类型可减小内存

数据类型操作

修改数据类型astype
修改小数点后位数np.round,另一种方法是"%.2f"

在这里插入图片描述

数组的形状

查看数组的形状:a.shape
修改数组的形状:a.reshape() 【括号内输入为一元组】
注:reshape函数有返回值(return),不会改变原数组的结构
生成数组时可采用:a.np,array().reshape()规定数组形状
铺展为一位数组几种方法:
1.已知数组中数据个数:a.reshape((num,))
2.b = a.reshape((a.reshape[0]*a.reshape[1],))
3.flatten函数:b = a.flatten

数组的计算

数组与数的计算

numpy的广播机制:数组中每一个元素分别运算

数组与数组计算

相同形状:对应元素进行计算
不同形状:有相同维度的扩展成相同形状进行计算,否侧报错

广播原则:如果两个数组的后缘维度(即从末尾开始算起的维度)的轴长度相符或其中一方长度为一,则认为他们广播兼容。广播会在缺失和(或)长度为一的维度上进行。
例:shape为(3,3,3)的数组无法与(3,2)计算
而shape为(3,3,2)的数组可与(3,2),(3,1),(1,2)的数组进行计算。

Numpy读取数据

CSV:Comma-Separated Value,逗号分隔值文件
显示:表格状态
源文件:换行和逗号分隔行列的格式化文本,每一行的数据表示一条记录

读取函数

np.loadtxt(fname,dtype=np.float,delimiter=None,skiprows=0,usecols=None,unpack=False)
在这里插入图片描述
delimiter:需设置,不指定会将一行识别为一字符串二报错
dtpye:默认会将较大数据转化为科学计数
unpuck:若值为:True,则会转置

转置常用命令

t.T
t.swapaxes(1,0) #交换轴
t.transpose()

numpy索引切片

取一行:a[1]或a[1,:]
取不连续的多行: a[[2,3,4]]
取连续的多行:a[2:,:]
列同理
取不相邻的点a[[1,2,3],[1,2,3]],则取(2,2)(3,3)(4,4)三点

获取最大值最小值的位置

np.argmax(t,axis=0)每行最大值
np.argmin(t,axis=1)

赋值

布尔索引: 例如t<10
t[t>20] = 3 将t中大于20的数字变为3

numpy中三元运算符

np.where(t<10,0,10) 将小于10的赋值为0,大于10的赋值为10

numpy中的裁剪clip

t.clip(10,20) 将小于10的变为10,将大于20的变为20
注:值为nan不受影响

numpy中的nan与inf

nan(NAN,Nan):not a number表示不是一个数字
什么时候numpy中会出现nan:
当我们读取本地的文件为float的时候,如果有缺失,就会出现nan
当做了一个不合适的计算的时候(比如无穷大(inf)减去无穷大)
inf(-inf,inf):infinity,inf表示正无穷,-inf表示负无穷
什么时候回出现inf包括(-inf,+inf)
比如一个数字除以0,(python中直接会报错,numpy中是一个inf或者-inf)
注:nan与inf都为float

numpy中nan注意点

1.两个nan不相等 np.nan!=np.nan
2.可借此判断nan的个数 np.count_nonzero(t!=t)
3.可采用bool类型将nan赋值 t[np.isnan(t)] = 0 ,将nan赋值为0
4.一般将nan赋值为中值或删去数据,以保持数据准确

numpy中常用统计函数

求和:t.sum(axis=None)
均值:t.mean(a,axis=None) 受离群点的影响较大
中值:np.median(t,axis=None)
最大值:t.max(axis=None)
最小值:t.min(axis=None)
极值:np.ptp(t,axis=None) 即最大值和最小值只差
标准差:t.std(axis=None)

在这里插入图片描述

采用ndarry填充nan为均值

在这里插入图片描述

def file_nan_by_mean (t):
    for i in range(t.shape[1]):
        nan_num = np.count_nonzero([t[:,i]!=t[:,i]])
        print(nan_num)
        if nan_num > 0:
            now_col = t[:,i]
            now_col_not = now_col[np.isnan(now_col) == False].sum()
            now_col_mean = now_col_not / (t.shape[0]-nan_num)
            now_col[np.isnan(now_col)] = now_col_mean
            t[:,i] = now_col

数组的拼接

竖直拼接np.vstack((t1,t2))
水平拼接np.hatack
数组的行列交换t[[1,2],:] = t[[2,1],:]

numpy生成随机数

在这里插入图片描述

numpy注意点copy

采取a = b 赋值时,a与b相互不独立,会影响
我们采取a = b.copy() 的方法,a,b互不影响

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值