Numpy学习笔记:三

tech2024-07-10  14


numpy学习笔记-仅供学习使用


# 基本索引及切片 import numpy as np ar = np.arange(20) print(ar) print(ar[4]) print(ar[3:6]) print('-----') # 一维数组索引及切片 ar = np.arange(16).reshape(4,4) print(ar, '数组轴数为%i' %ar.ndim) # 4*4的数组 print(ar[2], '数组轴数为%i' %ar[2].ndim) # 切片为下一维度的一个元素,所以是一维数组 print(ar[2][1]) # 二次索引,得到一维数组中的一个值 print(ar[1:3], '数组轴数为%i' %ar[1:3].ndim) # 切片为两个一维数组组成的二维数组 print(ar[2,2]) # 切片数组中的第三行第三列 → 10 print(ar[:2,1:]) # 切片数组中的1,2行、2,3,4列 → 二维数组 print('-----') # 二维数组索引及切片 ar = np.arange(8).reshape(2,2,2) print(ar, '数组轴数为%i' %ar.ndim) # 2*2*2的数组 print(ar[0], '数组轴数为%i' %ar[0].ndim) # 三维数组的下一个维度的第一个元素 → 一个二维数组 print(ar[0][0], '数组轴数为%i' %ar[0][0].ndim) # 三维数组的下一个维度的第一个元素下的第一个元素 → 一个一维数组 print(ar[0][0][1], '数组轴数为%i' %ar[0][0][1].ndim) # **三维数组索引及切片 # 布尔型索引及切片 ar = np.arange(12).reshape(3,4) i = np.array([True,False,True]) j = np.array([True,True,False,False]) print(ar) print(i) print(j) print(ar[i,:]) # 在第一维度做判断,只保留True,这里第一维度就是行,ar[i,:] = ar[i](简单书写格式) print(ar[:,j]) # 在第二维度做判断,这里如果ar[:,i]会有警告,因为i是3个元素,而ar在列上有4个 # 布尔型索引:以布尔型的矩阵去做筛选 m = ar > 5 print(m) # 这里m是一个判断矩阵 print(ar[m]) # 用m判断矩阵去筛选ar数组中>5的元素 → 重点!后面的pandas判断方式原理就来自此处 # 数组索引及切片的值更改、复制 ar = np.arange(10) print(ar) ar[5] = 100 ar[7:9] = 200 print(ar) # 一个标量赋值给一个索引/切片时,会自动改变/传播原始数组 ar = np.arange(10) b = ar.copy() b[7:9] = 200 print(ar) print(b) # 复制 # 随机数生成 samples = np.random.normal(size=(4,4))#random.normal:代表一个标准正态分布的样本值 print(samples) # 生成一个标准正太分布的4*4样本值 # numpy.random.rand(d0, d1, ..., dn):生成一个[0,1)之间的随机浮点数或N维浮点数组 —— 均匀分布 import matplotlib.pyplot as plt # 导入matplotlib模块,用于图表辅助分析 #matplotlib inline # 魔法函数,每次运行自动生成图表 a = np.random.rand()#生成一个[0,1)之间的随机浮点数或N维浮点数组 —— 均匀分布 print(a,type(a)) # 生成一个随机浮点数 b = np.random.rand(4)# 生成形状为4的一维数组 print(b,type(b)) c = np.random.rand(2,3)# 生成形状为2*3的二维数组,注意这里不是((2,3)) print(c,type(c)) # 生成1000个均匀分布的样本值 samples1 = np.random.rand(1000) samples2 = np.random.rand(1000) plt.scatter(samples1,samples2)#随机分布 # numpy.random.randn(d0, d1, ..., dn):生成一个浮点数或N维浮点数组 —— 正态分布 data1 = np.random.randn(1000) data2 = np.random.randn(1000) plt.scatter(data1,data2)#正态分布 # randn和rand的参数用法一样 # 生成1000个正太的样本值 import numpy as np # numpy.random.randint(low, high=None, size=None, dtype='l'):生成一个整数或N维整数数组 # 若high不为None时,取[low,high)之间随机整数,否则取值[0,low)之间随机整数,且high必须大于low # dtype参数:只能是int类型 # low=2:生成1个[0,2)之间随机整数 print(np.random.randint(2)) # low=2,size=5 :生成5个[0,2)之间随机整数 print('2-5取随机数:',np.random.randint(2,5)) print('生成6个[0,2)之间随机整数 :',np.random.randint(2,size=6)) # low=2,high=6,size=5:生成5个[2,6)之间随机整数 print('生成5个[2,6)之间随机整数 :',np.random.randint(2,6,size=5)) # low=2,size=(2,3):生成一个2x3整数数组,取数范围:[0,2)随机整数 print('生成一个2x3整数数组,取数范围:[0,2)随机整数 :','\n',np.random.randint(2,size=(2,3))) # low=2,high=6,size=(2,3):生成一个2*3整数数组,取值范围:[2,6)随机整数 print('生成一个2*3整数数组,取值范围:[2,6)随机整数 :','\n',np.random.randint(2,6,(2,3))) print('生成一个[10,50),2行4列的数组:','\n',np.random.randint(10,50,size=(2,5))) import os #numpy存储数组数据 .npy文件 #这样直接在桌面生成一个.npy文件 os.chdir('C:\\Users\\Titanic\\Desktop') ar = np.random.rand(5,5) print(ar) np.save('arraydata.npy',ar) # 也可以直接 np.save('C:/Users/Hjx/Desktop/arraydata.npy', ar) #numpy读取数组数据 .npy文件 ar_load = np.load('arraydata.npy') print(ar_load) #numpy # 存储/读取文本文件 # np.savetxt(fname, X, fmt='%.18e', delimiter=' ', newline='\n', header='', footer='', comments='# '):存储为文本txt文件 #存储文本文件 ar = np.random.rand(5,5) print(ar) np.savetxt('savatxt_text.txt',ar,delimiter=',')#$delimiter=',':以逗号进行分割 print('text文件写入成功') #读取文本文件 ar_loadtxt = np.loadtxt('savatxt_text.txt', delimiter=',') print('读取文本文件成功:','\n',ar_loadtxt) # 也可以直接 np.loadtxt('C:/Users/Hjx/Desktop/array.txt')
最新回复(0)