「这是我参与2022首次更文挑战的第5天,活动详情查看:2022首次更文挑战」
复习与回顾
众所周知,具有强大多维数据计算功能的numpy 模块,截止到目标已经发布到1.22.1版本啦。
-
numpy 特点
在 numpy 官网介绍中,概括的总结numpy 库主要有几大特点:
- numpy 库拥有强大的ndarray对象,使之能够在矢量化、索引和广播功能快速通用。
- numpy 是数学和科学领域中占据主导,提供全面的数学函数、随机数生产器、线性代数例程等
- numpy 支持多种硬件与计算平台,且可以与CPU、数据库进行分布是部署
- numpy 底层是通过C代码支撑,让其具有良好的高效性
- numpy 上手容易,可以覆盖从初级者到科学研究员等使用
- numpy 本身是开源的,大量使用者不断优化其现有功能
-
numpy 功能点
开源的 numpy 库,经过前面的学习已经对numpy主要的特性 ndarry对象,广播规则及视图与副本,认识 numpy 相关常用方法。
-
numpy 使用第一步
-
当我们对 numpy 库介绍、功能等有了清晰的了解后,我们就要着手开始学习 numpy 相关算术运算等方法。
-
在学习使用numpy 方法,我们都知道 numpy 核心是 array 数据结构,所有我们要先创建numpy 数组对象。
-
numpy 库创建数组有哪些方式呢?
- ndarray构造器创建数组
- 指定数组形状创建数组
- 现有的数组创建数组
- 指定范围创建数组
- 随机数据创建数组
本期我们将学习numpy 库数组创建方法,Let's go~
-
1. ndarray构造器创建数组
-
numpy.array 创建
numpy.array 调用的是numpy 库底层的ndarray 对象进行创建数组,也是我们常用的方法之一。
array(p_object, dtype=None, copy=True, order='K', subok=False, ndmin=0)参数 意义 p-object 数组或者嵌套的数列 dtype 数组元素的数据类型(可选,如int32,float64) copy 布尔类型,拷贝对象。默认是可拷贝的 order 数组的样式,可选值:K-列方向,C-行方向,A-任意方向 subok 返回一个基类类型的数组 ndmin 数组的维度 -
numpy.array 应用
-
创建1维数组
>>> arr = np.array([1,2,3]) >>> arr array([1, 2, 3]) -
创建多维数组
>>> arr2 = np.array([[0,2],[3,4]]) >>> arr2 array([[0, 2], [3, 4]]) >>> -
指定维度ndmin创建
>>> arr3 = np.array([1,2,3],ndmin=3) >>> arr3 array([[[1, 2, 3]]]) -
指定数组元素数据类型dtype 创建
>>> arr4 = np.array([1,2,3],dtype=float) >>> arr4 array([1., 2., 3.]) >>>
-
2. 指定数组形状创建数组
-
numpy.empty 创建未初始化的数组
numpy.empty(shape, dtype = float, order = 'C')参数 意义 shape 数组形状 dtype 数组元素数据类型 order 排序方式,可选值C-行优先,F-列优先 >>> empty = np.empty([1,2,3,4],dtype=int) >>> empty array([[[[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]], [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]]]) >>> -
numpy.zeros 创建元素为0的数组
numpy.zeros(shape, dtype = float, order = 'C')numpy.zeros 方法参数与empty 方法一样
>>> zeros = np.zeros(3) >>> zeros array([0., 0., 0.]) >>> -
numpy.ones 创建元素为1的数组
numpy.ones(shape, dtype = None, order = 'C')numpy.ones 方法参数与empty 方法一样
>>> ones = np.ones(3) >>> ones array([1., 1., 1.]) >>>
3. 现有的数组创建数组
-
numpy.asarray 创建数组
numpy.asarray 方法在_asarray.py文件中被装饰器set_module("numpy")加载,同样和 numpy.array()方法类似
numpy.asarray(a, dtype = None, order = None)参数 意义 a 传入任意数据,类型可以为list,tuple,ndarray dtype 数组元素数据类型 order 排序方式,可选值C-行优先,F-列优先 -
列表转换成 ndarray
>>> asar = np.asarray([1,2,3]) >>> asar array([1, 2, 3]) >>> -
多维数组创建
>>> a = np.array([(1.0, 2), (3.0, 4)], dtype='f4,i4').view(np.recarray) >>> np.asarray(a) is a False >>> np.asanyarray(a) is a True
-
-
numpy.frombuffer 创建动态数组
numpy.frombuffer 方法是 _mulitarray_umath.py 文件中方法,以数据流的形式转换成ndarray对象
numpy.frombuffer(buffer, dtype = float, count = -1, offset = 0)参数 意义 buffer 数据流的方式读入的对象 dtype 数组元素数据类型 count 读取的数据数量,默认为-1 offset 读取的数据流的起始位置,默认为0 >>> buffer = np.frombuffer(b"hellojuejin",dtype="S1") >>> buffer array([b'h', b'e', b'l', b'l', b'o', b'j', b'u', b'e', b'j', b'i', b'n'], dtype='|S1') -
numpy.fromiter 创建一维数组
numpy.fromiter 方法也是 _mulitarray_umath.py 文件中方法,可迭代对象创建ndarray对象,返回一维数组
numpy.fromiter(iterable, dtype, count=-1)参数 意义 iterable 可迭代对象 dtype 数组元素数据类型 count 读取的数据数量,默认为-1 >>> item = np.fromiter((x for x in range(5)),float) >>> item array([0., 1., 2., 3., 4.]) >>>
4. 指定范围创建数组
-
numpy.arange 创建
numpy.arange 指定范围创建返回ndarray对象,方法格式如下:
numpy.arange(start, stop, step, dtype)我们可以在_multiarray_umath.py 中找该方法的介绍和实现过程。
我们可以指定起始和步长就可以得到ndarray对象
参数 意义 start 开始值,默认为0 stop 终止值 step 间隔值 dtype 数组元素数据类型 >>> import numpy as np >>> ar = np.arange(3,10) >>> ar array([3, 4, 5, 6, 7, 8, 9]) >>> -
numpy.linspace 创建等差数列数组
numpy.linspace 方法创建一组等差数列的ndarray对象。
np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)该方法在 function_base.py 文件里,由@array_function_dispatch(_linspace_dispatcher)装饰器进行修饰的
参数 意义 start 开始值,默认为0 stop 终止值 num 间隔值,默认50 endpoint 是否包含终止值,默认包含 retstep 是否显示元素数据间距,默认是不显示的 dtype 数组元素数据类型 我们来看一下,创建一个3~19的范围的等差数列并返回数组对象
>>> line = np.linspace(3,19,3) >>> line array([ 3., 11., 19.]) >>> -
numpy.logspace 创建等比数列数组
numpy.logspace 方法在指定的数据范围内创建一组等比数列数组对象。
np.logspace(start, stop, num=50, endpoint=True, base=10.0, dtype=None)同理与numpy.linspace 方法一样属于 function_base 里的方法
>>> log = np.logspace(3,19,3) >>> log array([1.e+03, 1.e+11, 1.e+19]) >>>
5. 随机数据创建数组
-
numpy.random 模块方法
numpy.random 模块在mtrad.py文件中,调用random函数方法生成随机数据组成的数组
方法 意义 numpy.random.rand(d0,d1,…,dn) 创建0~1的数据 numpy.random.randint(low,high) 创建给定范围的随机整数 numpy.random.random_integers(low,high) 返回给定范围随机整数 numpy.random.random(size) 随机生成0,1之间的浮点数
总结
本期,我们对numpy 创建数组方法进行学习,实操常用的方法。
大家在实际使用过程中,多多使用。
以上是本期内容,欢迎大佬们点赞评论,下期见~~