Python:Numpy的使用1

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])
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值