Search

Travel Tips

Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Lifestyle

Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Hotel Review

Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Python核心——numpy二

Numpy基础数据结构

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)  
# **三维数组索引及切片

image.png

# 布尔型索引及切片


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判断方式原理就来自此处

image.png

# 数组索引及切片的值更改、复制


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)
# 复制

image.png

Numpy随机数


numpy.random包含多种概率分布的随机样本,是数据分析辅助的重点工具之一
# 随机数生成
samples = np.random.normal(size=(4,4))
print(samples)
# 生成一个标准正太分布的4*4样本值

image.png

# 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个均匀分布的样本值

image.png

#  numpy.random.randn(d0, d1, ..., dn):生成一个浮点数或N维浮点数组 —— 正态分布


samples1 = np.random.randn(1000)
samples2 = np.random.randn(1000)
plt.scatter(samples1,samples2)
# randn和rand的参数用法一样
# 生成1000个正太的样本值

image.png

# 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)随机整数

image.png

Numpy数据的输入输出


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)

image.png

# 读取数组数据 .npy文件


ar_load =np.load('arraydata.npy')
print(ar_load)
# 也可以直接 np.load('/home/zty/Documents/python/Python进阶数据分析及可视化/数据解析核心/CH01科学计算工具:Numpy/arraydata.npy')

image.png

# 存储/读取文本文件


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')

image.png

这是一个简介
    互联网冲浪金牌选手。赖床世锦赛纪录保持者,拖延俱乐部顶级VIP,夜宵外卖一级鉴赏师,国家脱单脱贫重点扶持对象,中央戏精学院优秀学生,亚洲酸柠檬推广大使,国家一级退堂鼓表演艺术家。
评论 (125)
评论

我是 s enim interduante quis metus. Duis porta ornare nulla ut bibendum

Rosie

6 minutes ago

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

Agatha Christie

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

Steven

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.

Danielle Steel

December 4, 2020 at 3:12 pm