Travel Tips
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Numpy基础数据结构
核心:基本索引及切片 / 布尔型索引及切片
# 基本索引及切片
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) # 复制
numpy.random包含多种概率分布的随机样本,是数据分析辅助的重点工具之一 # 随机数生成 samples = np.random.normal(size=(4,4)) 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() print(a,type(a)) # 生成一个随机浮点数 b = np.random.rand(4) print(b,type(b)) # 生成形状为4的一维数组 c = np.random.rand(2,3) print(c,type(c)) # 生成形状为2*3的二维数组,注意这里不是((2,3)) samples1 = np.random.rand(1000) samples2 = np.random.rand(1000) plt.scatter(samples1,samples2) # 生成1000个均匀分布的样本值
samples1 = np.random.randn(1000) samples2 = np.random.randn(1000) plt.scatter(samples1,samples2) # randn和rand的参数用法一样 # 生成1000个正太的样本值
# numpy.random.randint(low, high=None, size=None, dtype='l'):生成一个整数或N维整数数组 # 若high不为None时,取[low,high)之间随机整数,否则取值[0,low)之间随机整数,且high必须大于low # dtype参数:只能是int类型 print(np.random.randint(2)) # low=2:生成1个[0,2)之间随机整数 print(np.random.randint(2,size=5)) # low=2,size=5 :生成5个[0,2)之间随机整数 print(np.random.randint(2,6,size=5)) # low=2,high=6,size=5:生成5个[2,6)之间随机整数 print(np.random.randint(2,size=(2,3))) # low=2,size=(2,3):生成一个2x3整数数组,取数范围:[0,2)随机整数 print(np.random.randint(2,6,(2,3))) # low=2,high=6,size=(2,3):生成一个2*3整数数组,取值范围:[2,6)随机整数
numpy读取/写入数组数据、文本数据 # 存储数组数据 .npy文件 import os os.chdir('/home/zty/Documents/python/Python进阶数据分析及可视化/数据解析核心/CH01科学计算工具:Numpy') ar = np.random.rand(5,5) print(ar) np.save('arraydata.npy', ar) # 也可以直接 np.save('/home/zty/Documents/python/Python进阶数据分析及可视化/数据解析核心/CH01科学计算工具:Numpy/arraydata.npy', ar)
ar_load =np.load('arraydata.npy') print(ar_load) # 也可以直接 np.load('/home/zty/Documents/python/Python进阶数据分析及可视化/数据解析核心/CH01科学计算工具:Numpy/arraydata.npy')
ar = np.random.rand(5,5) np.savetxt('array.txt',ar, delimiter=',') # np.savetxt(fname, X, fmt='%.18e', delimiter=' ', newline='\n', header='', footer='', comments='# '):存储为文本txt文件 ar_loadtxt = np.loadtxt('array.txt', delimiter=',') print(ar_loadtxt) # 也可以直接 np.loadtxt('/home/zty/Documents/python/Python进阶数据分析及可视化/数据解析核心/CH01科学计算工具:Numpy/array.txt')
Sed ac lorem felis. Ut in odio lorem. Quisque magna dui, maximus ut commodo sed, vestibulum ac nibh. Aenean a tortor in sem tempus auctor
December 4, 2020 at 3:12 pm
Sed ac lorem felis. Ut in odio lorem. Quisque magna dui, maximus ut commodo sed, vestibulum ac nibh. Aenean a tortor in sem tempus auctor
December 4, 2020 at 3:12 pm
Donec in ullamcorper quam. Aenean vel nibh eu magna gravida fermentum. Praesent eget nisi pulvinar, sollicitudin eros vitae, tristique odio.
December 4, 2020 at 3:12 pm
我是 s enim interduante quis metus. Duis porta ornare nulla ut bibendum
Rosie
6 minutes ago