一.前情提要
1.本文是代码结合知识点,注释即为知识点
2.主要详细讲解numpy部分基础知识
3.若想深入学习,建议阅读
【python教程】数据分析——numpy、pandas、matplotlib_哔哩哔哩_bilibili
二.笔记/代码
①基本组
#重在数值计算
import random
#补充: random.randint(a, b):返回一个在指定范围[a, b]内的随机整数。
# random.uniform(a, b):返回一个在指定范围[a, b]内的随机浮点数,可以包括a和b。
# random.choice(seq):从序列seq中随机选择一个元素返回。
# random.shuffle(seq):将序列seq中的元素随机排序。
# random.random()函数返回一个0到1之间的随机浮点数,包括0但不包括1。
#引用numpy
import numpy as np
#使用numoy生成数组,得到ndarray的类型
t1=np.array([1,2,3],dtype=float)
#改变数据类型eg: t3=np.array([1,1,0,0,1],dtype=bool)
t2=np.arange(4,10,2)#arange效果等于array(range(10)),2是步长
print(t1.dtype)#检测t1内部的数据类型
#调整数据类型
t4=t1.astype('int8')
#numpy中的小数
t5=np.array([random.random() for i in range(10)])
t6=np.round(random.random(),2)#2是保留两位小数
②数值修改
import numpy as np
frame=''
t2=np.loadtxt(frame,dtype='int',delimiter=',',unpack=True)
#直接修改值
t2[2,2:4]=0
# frame:一个字符串,指定要加载的文件路径或文件名。
# dtype='int':一个可选的参数,指定要加载的数据的类型。在这里,数据被指定为整数类型。
# delimiter=',':一个可选的参数,指定数据文件中的分隔符。在这里,数据文件使用逗号作为分隔符。
# unpack=True:一个可选的参数,如果设置为True,则将加载的数据以行为单位进行解压缩,即每一行的数据将存储在一个单独的数组中。
# 通过使用t2[2,2:4] = 0语句,直接修改了加载的数据。这条语句将t2数组的第三行(索引为2)的第三列到第四列(索引为2到3)的元素值设置为0。
#将<10的值替换为3
t2<10#得出的结果是布尔值
#替换方法
t2[t2<10]=3
#将<3的值替换为0,其余的替换为10
t2.np.where(t2<=3,0,10)
#将<10的值替换为10,>20的替换为20
t2.clip(10,20)
#nan是浮点类型
t2=t2.astype(float)#先将t2转化为浮点类型
t2[3,3]=np.nan
③数组形状
import numpy as np
t1=np.array([0,1,2,3,4,5,6])
print(t1.shape)#shape查看是几维的
t2=np.range(12)
t2.reshape((3,4))#改变t2为3行4列,内部为元组格式
t3=np.arange(24).reshape(2,3,4)#2为2块
t4=t3.reshape((t3.shape[0]*t3.shape[1]))
# t3.shape[0] t3的行, t3.shape[1]t3的列
t3.flatten()#直接将t3展开为一元的
t1+2#会把2加给t1所有的值
#维度相同时,每个数值对应相加
t5=np.arange(0,24).reshape((4,6))
t6=np.arange(100,124).reshape((4,6))
t5+t6
#维度不完全相同时(行和列至少一种相同)
t5=np.arange(0,24).reshape((4,6))#4行6列
t7=np.arange(0,6)#1行6个数
t5-t7
#此时t5每一行分别与t7这一行计算
#shape(3,3,2)可以和shape(3,2)计算,shape(3,3,2)也可以和shape(3,3)计算
④文件导入
import numpy as np
frame=''
t1=np.loadtxt(frame,dtype='int',delimiter=',',unpack=False)
t2=np.loadtxt(frame,dtype='int',delimiter=',',unpack=True)
#此时t1和t2数据按照东南45°对角线翻折即行变成列,列变成行
#数组的转置
# #列表逆时针反转九十度
t2=np.arange(24).reshape(4,6)
t2.transpose()
⑤索引和切片
import numpy as np
frame=''
t2=np.loadtxt(frame,dtype='int',delimiter=',',unpack=True)
print(t2[2])#取谋一行直接在[]内取值
#取连续多行
print(t2[2:])
#取不连续多行
print(t2[2,8,10])
#取行和列
print(t2[[1,8],:])#,前是行,后是列
#取列
print(t2[:,0])#0是第一列
#取连续的多列
print(t2[:,2::2])#第二个冒号是步长
#取不连续多列
print(t2[:,[0,2]])
#取行列,比如3行4列
a=t2[2,3]
print(a)
#取多行多列,比如3行到5行 ,第2列到第4列
print(t2[2:5,1:4])
#取多个不相邻的点
c=t2[[0,2,2],[0,1,3]]#0与0对应一个值,2与1对应一个值一次类推
#结果是(0,0)(2,1)(2,3)
print(c)
⑥维度笔记
#一.基本定义
#计算不同维度的值
#二维行是axis=0,列是axis=1
#三维二维行是块是axis=0,axis=1,列是axis=2
#二.numpy读取数据,格式
#import numpy as np
#t1=np.loadtxt(frame,dtype=np.float,delimiter=None,,usecols=None,unpack=False)
#注释:frame文件,字符串或产生器.dtype数据类型.delimiter分割字符.
# skiprows跳过前x行.usecols读取指定列,索引,元组类型。unpack是否旋转
import numpy as np
frame=''
t1=np.loadtxt(frame,dtype='int',delimiter=',',unpack=False)
t2=np.loadtxt(frame,dtype='int',delimiter=',',unpack=True)
#此时t1和t2数据按照东南45°对角线翻折即行变成列,列变成行
#数组的转置
# #列表逆时针反转九十度
t2=np.arange(24).reshape(4,6)
t2.transpose()
#或者t2.T#
#t2.swapaxes(1,0)交换0轴1轴
三.最后提示
1.本文主要按小节来,如有相关章节笔记不明显,不妨往后看看?
eg:不知道⑤中 frame='' 的含义不妨看看⑥中的
#二.numpy读取数据,格式
#import numpy as np
#t1=np.loadtxt(frame,dtype=np.float,delimiter=None,,usecols=None,unpack=False)
#注释:frame文件,字符串或产生器.dtype数据类型.delimiter分割字符.
# skiprows跳过前x行.usecols读取指定列,索引,元组类型。unpack是否旋转