其他分享
首页 > 其他分享> > 第三节 课时18-课时26

第三节 课时18-课时26

作者:互联网

numpy

python中做科学计算的基础库,重在数字计算,也是大部分python科学计算库的基础

一. numpy数组的创建
首先导入numpy:
import numpy as np

  1. a = np.array([1,2,3,4,5])
  2. b = np.array(range(1,6))
  3. c = np.arrange(1,6)
    np.arange([start,] stop[,step], detype= None)

数组的类名type:numpy.ndarray
数据的类型:detype(“int64”)

指定创建的数组的数据类型:
a = np.array([1,0,1,0], dtype=np.bool) 或者使用“dtype=’?’ ”

修改数组的数据类型:
a.astype(“i1”); 或者使用a.astype(np.int8)

修改浮点型的小数位数:
以数组a为例:
np.round(a, 2)

二. 数组的形状、数组与数的运算、数组与数组的运算

数组的形状: 以数组a为例:

  1. 查看数组的形状: a.shape
  2. 修改数组的形状:a.reshape(m,n) #m行n列的二维数组
    为有返回值操作
    a.flatten() 展平成1维

数组与的计算:
数组与数的运算(加、减、乘、除)在numpy中符合广播机制,加减乘除的值被广播到数组的所有元素上。

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


轴在numpy中可以理解为方向,使用0,1,2…数字表示,对于一个以为数组,只有0轴,对于数组(shape(2,2)),有0轴和1轴。对于三位数组(shape(2,2,3)),有0,1,2轴。
在这里插入图片描述
在这里插入图片描述

三. numpy读取数据
读取本地CSV数据为例

np.loadtxt(“文件路径”,delimiter=",", dtype='int ', unpack=1) #dtype默认为np.float.
delimiter:指定边界符号是什么,不指定会会导致每行数据为一个整体的字符串而报错;
dtype:默认情况下对于较大的数据会将其变为科学计数的方式
unpack:默认是False(0),默认情况下,有多少条数据就会有多少行; 为True(1)的情况下,每一列的数据会组成一行,元素数据由多少列,加载出来的互数据就会有多少行,相当于转置。

numpy中的转置
转置为一种变换,对于numpy数组而言,就是在对角线方向交换数据。

  1. t.transpose()
  2. t.swapaxes() 交换轴
  3. t.T
    转置和交换轴的效果一样

四、numpy的索引和切片

切片:选取一部分
索引:取一个值

切片

  1. 取一行:t[2]
  2. 取多行:t[1:3]; t[3:,:]
  3. 取一列:t[:,2]
  4. 取多列:t[:, 2:4]
  5. 取连续多行多列:t[2: ,: 3]
  6. 取不连续的多行多列:t[[1,3],[2,4]] # 选择的是(1,2),(3,4)位置的值。

numpy中数值的修改
t[:,2:4]=0 #把数组t中第二列和第三列的值替换为0

numpy中的布尔索引:t[t>10]=10
numpy中的三元运算符:np.where(t<10,0,10) #把数组t中小于10的元素替换成0,把大于10的元素替换为10
numpy中的裁剪(clip):t.clip(10,20) # 把数组t中小于10的元素替换为10,大于20的元素替换为20.

五、numpy中的nan和inf

nan(NAN,Nan):not a number 表示不是一个数字
当读取本地文件为float时,如果有缺失,就会出现nan值;
当做了一个不合适的计算时(比如无穷大(inf)减去无穷大)

inf(-inf,inf):infinity, inf表示正无穷,-inf表示负无穷。
如一个数字除以0,在python中会直接报错,numpy中是一个inf或-inf)

numpy中nan的注意点:

  1. 两个nan是不相等的;
  2. nan和任何值计算都为nan.
    利用上述特性,判断数组中nan的个数,或作替换等。

六、numpy中常用的统计函数

  1. 求和:t.sum(axis=None)
  2. 均值:t.mean(a,axis=None)
  3. 中值:np.median(t,axis=None)
  4. 最大值:t.max(axis=None)
  5. 最小值:t.min(axis=None)
  6. 极值:npptp(t, axis=none)
  7. 标准差:t.std(axis=None)

七、数组拼接
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)

numpy生成随机数:
nprandom.randint(10,20,(4,5)) # 生成一个范围在10至20之间,4行5列的整数数组。

标签:26,18,nan,课时,数组,np,inf,numpy,axis
来源: https://blog.csdn.net/weixin_44618461/article/details/120394713