栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python:Numpy的使用1

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python:Numpy的使用1

目录

Numpy的核心对象array和array的创建Numpy对数组按索引查询

基础索引神奇索引布尔索引

Numpy的核心对象array和array的创建
# numpy的核心数据结构,叫做array数组,array对象可以是一维数组,也可以是多维数组
# numpy就是对array这个对象进行操作
# python的list功能可以实现相同功能,但是array性能更优
# array和list的一个区别:array的元素必须是同一种类型,比如都是int类型,这也是numpy高性能的一个原因

# array本身的属性
# shape:返回一个元组,表示维度
# ndim:一个数字,表示array维度的数目
# size:一个数字,表示array中所有数据元素的数目
# dtype:array中数据的数据类型

# 创建array
# 从python的列表list和嵌套列表创建array
# 使用预定函数arange,ones/ones_like,zeros/zeros_like,empty/empty_like,full/full_like,eye等函数创建
# 生成随机数的np.random模块构建

# array本身支持大量操作和函数
# 直接逐元素加减乘除等算术操作
# 更好用的面向多维的数组索引
# 求sum/mean等聚合函数
# 线性代数函数,比如求逆矩阵,求解方程组
import numpy as np
print(np.__version__) #显示numpy的版本
x=np.array([1,2,3,4,5,6,7,8])
y=np.array([[1,2,3,4],[5,6,7,8]])
print(x)
print(y)
print(x.shape) # 返回一个元组,表示维度
print(y.shape)
print(x.ndim) # 返回一个数字,表示维度,比如1维,2维
print(y.ndim)
print(x.size) # 表示一共有几个元素
print(y.size)
print(x.dtype)
print(y.dtype)

a=np.arange(10)
b=np.arange(2,10,2)
print(a,b)

a=np.ones(10)
b=np.ones((2,3))
print(a,b)
a= np.ones_like(b) # 创建一个维度和y相同的1矩阵
print(a)

a=np.zeros(10)
b=np.zeros((2,3))
print(a,b)
a= np.zeros_like(b) # 创建一个维度和y相同的0矩阵
print(a)

a=np.empty(10) # 各个元素是随机数,未初始化
b=np.empty((2,3))
print(a,b)
a= np.empty_like(b) # 创建一个维度和y相同的空矩阵
print(a)

a=np.full(10,666) # 各个元素由用户的指定值填充满(用666填满)
b=np.full((2,3),777)
print(a,b)
a= np.full_like(b,888) # 创建一个维度和y相同的满矩阵
print(a)

# np.random模块
# randn
print(np.random.randn()) #生成给定维度的正态分布随机数,均值为0,方差为1
print(np.random.randn(3))
print(np.random.randn(3,2))
print(np.random.randn(3,2,4))

# array支持大量操作
a=np.arange(10).reshape(2,5)
print(a)
print(a.shape)
print(a+1) # 所有元素加1
print(a*3)
print(np.sin(a))
print(np.exp(a))
b=np.random.randn(2,5)
print(a+b) # 对应元素相运算

Numpy对数组按索引查询
import numpy as np
x=np.arange(10)
X=np.arange(20).reshape(4,5)
基础索引
# # 基础索引
# # 一维数组,和python的list一样
print(x)
print(x[0],x[1],x[5],x[-1])
print(x[2:4])
print(x[2:-1]) #从第三个到倒数第二个(不包含最后一个)
print(x[2:]) #从第三个到最后一个
print(x[-3:]) #从倒数第三个到最后一个

# 二维数组,X[_,_]
print(X)
print(X[0,1])# 取第1行第2列的数
print(X[-1,2])# 取最后1行第3列的数
print(X[-1])# 取最后1行
print(X[0])# 取第1行
print(X[2])# 取第3行
print(X[:-1])# 取除了最后1行之外的其他行
print(X[:-1,2:4])# 取除了最后1行之外的其他行的第3列至第4列
print(X[:-2,2:4])# 取除了最后2行之外的其他行的第3列至第4列
print(X[:1,2:4])# 取前1行的第3列至第4列
print(X[:2,2:4])# 取前2行的第3列至第4列
print(X[:3,2:4])# 取前3行的第3列至第4列
print(X[:,0])# 取第1列
print(X[:,2])# 取第3列
# 二维数组的修改会改变原来的数组
# 因为numpy处理大数组,避免每次都复制
X[:2,:3]=666 #将二维数组的前2行和前3列修改为666
print(X)

神奇索引
# 神奇索引
# 用整数数组index进行索引
# 一维数组
print(x)
print(x[[3,4,7]])
index=np.array([[0,2],[1,4]])
print(x[index])
exmaple
a=np.random.randint(1,100,10) # 随机生成[1,100)之间的10个整数
a.argsort() # 生成a中元素排序的下标(从小到大排序)
print(a)
print(a.argsort())
print(a[a.argsort()])#按照排序下标进行索引
print(a.argsort()[-3:])# a中最大的三个元素下标
print(a[a.argsort()[-3:]])# a中最大的三个元素下标

# 二维数组
print(X)
print(X[[0,2]])#取出X的第1行和第3行
print(X[[0,2],:])#取出X的第1行和第3行(和上一行代码效果一样)
print(X[:,[0,2]])#取出X的第1列和第3列
print(X[[1,3],[0,2]])#取出X的[1,0]和[3,2]处的元素

布尔索引
# 布尔索引
# 一维数组
print(x)
print(x>5)#输出布尔向量
print(x[x>5])#布尔索引,输出x中大于5的数
x[x<5]=0
x[x>=5]=1 #以5为界限进行01化
print(x)
x[x==1]+=20 #x==1的元素全部+20
print(x)

# 二维数组
print(X)
print(X>10)
print(X[X>10])# 输出的是一个向量(把所有的True连成了一个一维向量)
print(X[:,3]>10)#输出X第3列大于10的布尔向量
print(X[X[:,3]>10])#用X第3列大于10的布尔向量索引出对应的行
X[X[:,3]>10]=666
print(X)

# 布尔索引-条件组合
condition=(x%2==0)|(x>7)
print(condition)
print(x[condition])
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/768072.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号