Numpy

作者: QXPLUS | 来源:发表于2022-03-06 12:37 被阅读0次

NumPy ( Numerical Python)是支持 Python 语言的数值计算扩充库,其拥有强大的多维数组处理与矩阵运算能力

NumPy 是 Scipy.org 中最重要的库之一,它同时也被 Pandas,Matplotlib 等我们熟知的第三方库作为核心计算库。当你在单独安装这些库时,你会发现同时会安装 NumPy 作为依赖

数值类型 dtype(data-type) 对象的实例

  • 可以用 numpy.dtype(object, align, copy)来指定数值类型
  • 在数组里面,可以用 dtype=参数指定数值类型
import numpy as np
a = np.array([1.1,2.2,3.3],
             dtype = np.float64)
  • array.dtype查看数组array的数据类型
print(a.dtype)
#  dtype('float64')
  • 使用 array.astype() 方法在不同的数值类型之间相互转换
a.astype(int)
# array([1, 2, 3])
a.astype(int).dtype
# dtype('int64')

NumPy 数组生成

NumPy 中,多维数组对象ndarray 具有六个参数:

  • shape:数组的形状。
  • dtype:数据类型。
  • buffer:对象暴露缓冲区接口。
  • offset:数组数据的偏移量。
  • strides:数据步长。
  • order{'C','F'},以行或列为主排列顺序。

在 NumPy 中,我们主要通过以下 5 种途径创建数组:

1. 从 Python 数组结构列表,元组等转换

numpy.array(object, dtype=None, copy=True, order=None, subok=False, ndmin=0)
其中,参数:
object:列表、元组等。
dtype:数据类型。如果未给出,则类型为被保存对象所需的最小类型。
copy:布尔类型,默认 True,表示复制对象。
order:顺序。
subok:布尔类型,表示子类是否被传递。
ndmin:生成的数组应具有的最小维数。

2. 使用 np.arangenp.onesnp.zeros 等 NumPy 原生方法。
  • arange() 的功能是在给定区间内创建一系列均匀间隔的值。
    numpy.arange(start, stop, step, dtype=None)

  • linspace 用于在指定的区间内返回间隔均匀的值。
    numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)

  • numpy.ones 用于快速创建数值全部为 1 的多维数组。
    numpy.ones(shape, dtype=None, order='C')

  • zeros 方法和上面的 ones 方法非常相似,不同的地方在于,这里全部填充为 0
    numpy.zeros(shape, dtype=None, order='C')

  • numpy.eye 用于创建一个单位矩阵,其特点是k 对角线上的值为 1,其余值全部为0
    numpy.eye(N, M=None, k=0, dtype=<type 'float'>)

3. 从已知数据创建

我们还可以从已知数据文件、函数中创建 ndarray。

  • frombuffer(buffer):将缓冲区转换为 1 维数组。
  • fromfile(file,dtype,count,sep):从文本或二进制文件中构建多维数组。
  • fromfunction(function,shape):通过函数返回值来创建多维数组。
  • fromiter(iterable,dtype,count):从可迭代对象创建 1 维数组。
  • fromstring(string,dtype,count,sep):从字符串中创建 1 维数组。

数组基本操作

reshape 可以在不改变数组数据的同时,改变数组的形状。其中,numpy.reshape() 等效于 ndarray.reshape()reshape 方法非常简单:

numpy.reshape(a, newshape)

数组展开

ravel 的目的是将任意形状的数组扁平化,变为 1 维数组。

numpy.ravel(a, order='C')

轴移动

moveaxis 可以将数组的轴移动到新的位置。

a.shape, np.moveaxis(a, 0, -1).shape
(1, 2, 3), (2, 3, 1)

轴交换

swapaxes 可以用来交换数组的轴。

numpy.swapaxes(a, axis1, axis2)

a.shape, np.swapaxes(a,0,2).shape
(1, 4, 3), (3, 4, 1)

  • 数组转置
    transpose 类似于矩阵的转置,它可以将 2 维数组的横轴和纵轴交换。
    numpy.transpose(a, axes=None)
维度改变

atleast_xd 支持将输入数据直接视为 x维。这里的 x 可以表示:1,2,3

numpy.atleast_1d()
numpy.atleast_2d()
numpy.atleast_3d()

np.atleast_1d([1,2,3]).shape, np.atleast_2d([1,2,3]).shape,np.atleast_3d([1,2,3]).shape
(3,), (1, 3), (1, 3, 1)

类型转换

在 NumPy 中,还有一系列以 as 开头的方法,它们可以将特定输入转换为数组,亦可将数组转换为矩阵、标量,ndarray 等。

  • asarray(a,dtype,order):将特定输入转换为数组。
  • asanyarray(a,dtype,order):将特定输入转换为 ndarray
  • asmatrix(data,dtype):将特定输入转换为矩阵。
  • asfarray(a,dtype):将特定输入转换为 float 类型的数组。
  • asarray_chkfinite(a,dtype,order):将特定输入转换为数组,检查 NaNinfs
  • asscalar(a):将大小为 1 的数组转换为标量。
数组连接

concatenate 可以将多个数组沿指定轴连接在一起。
numpy.concatenate((a1, a2, ...), axis=0)

数组堆叠
  • stack(arrays,axis):沿着新轴连接数组的序列。
  • column_stack():将 1 维数组作为列堆叠到 2 维数组中。
  • hstack():按水平方向堆叠数组。
  • vstack():按垂直方向堆叠数组。
  • dstack():按深度方向堆叠数组。
拆分
  • split(ary,indices_or_sections,axis):将数组拆分为多个子数组。
  • dsplit(ary,indices_or_sections):按深度方向将数组拆分成多个子数组。
  • hsplit(ary,indices_or_sections):按水平方向将数组拆分成多个子数组。
  • vsplit(ary,indices_or_sections):按垂直方向将数组拆分成多个子数组。
追加
  • append(arr,values,axis):将值附加到数组的末尾,并返回 1 维数组。
搜索和计数
  • argmax(a ,axis,out):返回数组中指定轴的最大值的索引。
  • nanargmax(a ,axis):返回数组中指定轴的最大值的索引,忽略 NaN。
  • argmin(a ,axis,out):返回数组中指定轴的最小值的索引。
  • nanargmin(a ,axis):返回数组中指定轴的最小值的索引,忽略 NaN。
  • argwhere(a):返回数组中非 0 元素的索引,按元素分组。
  • nonzero(a):返回数组中非 0 元素的索引。
  • flatnonzero(a):返回数组中非 0 元素的索引,并铺平。
  • where(条件,x,y):根据指定条件,从指定行、列返回元素。
  • searchsorted(a,v ,side,sorter):查找要插入元素以维持顺序的索引。
  1. extract(condition,arr):返回满足某些条件的数组的元素。
  • count_nonzero(a):计算数组中非 0 元素的数量。

相关文章

  • 科学计算库numpy的执行示例

    numpy1 numpy2 numpy3 numpy4

  • numpy中的常量

    Constants 正无穷 numpy.inf numpy.Inf numpy.Infinity numpy.in...

  • NumPy学习资料

    Numpy 中文资料 NumPy 中文文档 NumPy 中文用户指南 NumPy 中文参考手册

  • Numpy基础

    安装Numpy Numpy Numpy属性 ndim:纬度 shape:行数和列数 size:元素个数 Numpy...

  • Numpy和Pandas基本操作速查

    """ numpy 基本操作 """'''安装 Numpy 的方法:pip install numpy''''''...

  • numpy 基础

    numpy 基础 导入numpy 版本 np常用方法 numpy.array 的基本属性 numpy.array ...

  • Numpy入门

    1、熟悉 numpy 的基础属性 2、numpy 创建 array 3、numpy的基础运算 4、numpy索引 ...

  • 学习:biopython的安装

    安装Numpy 因为使用biopython需要numpy的支持,所以需要先安装numpy。安装numpy过程如下:...

  • Numpy

    Numpy中文文档 # 基本语法 ``` import numpy myText = numpy.genfromt...

  • numpy运算

    numpy的与运算 numpy 中 argsort() numpy 中的布尔索引

网友评论

      本文标题:Numpy

      本文链接:https://www.haomeiwen.com/subject/jaavrrtx.html