Python学习:numpy库基础知识
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Python学习:numpy库基础知识,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3204字,纯文字阅读大概需要5分钟。
内容图文
![Python学习:numpy库基础知识](/upload/InfoBanner/zyjiaocheng/620/68c55faa34de4a7a85c03302cebed0fc.jpg)
前言: 入门深度学习的时候,发现自己学习numpy库不成系统,很多知识点记忆的很凌乱,于是花了一点时间整理下常用numpy库的知识。
1. numpy的基础知识
numpy具有自己特有的数据格式:ndarray格式。要进行numpy库的使用就要先将创建的列表数据转换成这个格式,转换方法就是np.arrary() 这个函数。
import numpy as np
vector = np.array([[1,2,3,4],[5,6,7,8]])
# 转化为numpy可用的ndarray形式
2. numpy的数据基本操作
2.1 查看数据基本信息
- 查看数据的形状:vector.shape
- 查看数据的类型:type(vector)
- 查看数据元素的类型:vector.dtype
print(vector.shape) # 数据的形状: (2,4)
print(type(vector)) # 数据的类型: numpy.ndarray
print(vector.dtype) # 数据元素的类型: dtype('int32')
2.2 数据的索引
numpy中数据的索引和列表有些不同,但也都是从0开始进行索引的。同样可以使用切片的方式进行索引。
# 注意是从0开始索引的
print(vector[1,2]) # 取第2行第3列的元素
print(vector[:,2]) # 取第3列
print(vector[1,:]) # 取第2行
print(vector[1,:2]) # 取第2行1、2列
2.3 数据的基本操作
对numpy的数据同样可以进行取极值、对行列求和、元素类型转换的操作。
print(vector.min()) # 最小值
print(vector.max()) # 最大值
print(vector.sum(axis=1)) # 对行求和
print(vector.sum(axis=0)) # 对列求和
vector = vector.astype(float) # 转换为float类型
3. numpy的数据生成
除了将列表数据转换为numpy数据外,我们也可以通过numpy库中自带的函数生成数据。
3.1 数据的生成
最简单的数据生成通过arange函数实现,它和列表生成的range函数比较类似。
可以生成指定形状的数据,通过reshape(3,5) 如生成3行5列的矩阵。
可以查看数据的维度(ndim) 和 元素个数(size)。
a = np.arange(15) # 生成[1,15)的一维array数据
a = np.arange(15).reshape(3,5) # reshape成 3行5列 的结构
print(a.ndim) # 数据的维度:2
print(a.size) # 元素的个数:15
3.2 数据的展平
上节中我们可以通过reshape生成矩阵,同样也可以将矩阵拉长为一维数据,有两个方法:ravel()和flatten()。更推荐使用flatten(),它们的不同在于:
- ravel: 返回的是一个数组的视图,其值改变的话,原值也要变。
- flatten: 分配了新的内存,不会出现这样的问题。(和浅复制、深复制比较类似)
a1 = a.ravel()
a1 = a.flatten()
3.3 随机数据的生成
可以使用numpy生成随机数,其中random和randint的不同在于:
- random: 生成0-1之间的浮点数,不能指定随机数范围。
- randiant: 生成整数,可以指定随机数范围。
np.random.random((2,3)) # 生成0-1的浮点数 (2×3格式)
np.random.randint(1,100,(2,3)) # 生成0-100的整数(2×3格式)
np.linspace(0,5,4) # 0-5区间,生成4个等间隔的数字
np.floor(10*np.random.random((2,3))) #向下取整
4. numpy的数据拼接和切分
numpy中也可以进行数据的拼接和切分。
4.1 数据的拼接
数据的拼接可分为按行拼接、按列拼接。按行拼接就是进行横向的拼接,按列拼接就是进行纵向的拼接。
- hstack: 按行拼接。
- vstack: 按列拼接。
a = np.floor(10*np.random.random((2,2)))
b = np.floor(10*np.random.random((2,2)))
np.hstack((a,b)) # 按行拼接
np.vstack((a,b)) # 按列拼接
4.2 数据的切分
数据的切分也可分为按行切分、按列切分。在切分时要指定切分后的个数,或者指定切分的位置。
- hsplit: 按行切分。
- vsplit: 按列切分。
c = np.floor(10*np.random.random((2,12)))
np.hsplit(c,3) # 按行切分为3份
np.hsplit(c,(3,4)) # 在第3、4列后分别切一刀
np.vsplit(c,2) # 按列切分为2份
内容总结
以上是互联网集市为您收集整理的Python学习:numpy库基础知识全部内容,希望文章能够帮你解决Python学习:numpy库基础知识所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。