Python 科学计算库 NumPy 基本操作

huanghong 2019-06-20

NumPy(Numerical Python) 是一个开源的Python 科学计算库,它是 Python科学计算库的基础,许多其他著名的科学计算库如Pandas、Scikit-learn等,都要用到NumPy 库的一些功能。

NumPy 允许在Python 中做向量和矩阵的运算,而且很多底层的函数都是用C 语言写的,将获得在普通 Python 中无法达到的运算速度。

查看NumPy 版本

import numpy as np

print(np.__version__)

输出结果:1.16.2

Python 科学计算库 NumPy 基本操作

使用关键字 import 导入 numpy模块,为了使用方便,通过关键字 as 对其进行别名处理。

NumPy的数组为ndarray

别名为 array,numpy.array 与 标准Python 库类 array.array 不一样,标准库中只能处理一位数组并且功能相对较少。

a = np.array([7,2,9,10])

Python 科学计算库 NumPy 基本操作

shape - 显示数组的维度。为一个整数元祖,表示每个维度上的大学。对于一个 n 行 m列的矩阵来说,shape 就是 (n, m)。

a = np.array([[5.2,3.0,4.5],[9.1,0.1,0.3]])

Python 科学计算库 NumPy 基本操作

a = np.array([[[1,11],[2,22],[12,21]],[[3,33],[4,44],[34,43]],[[5,55],[6,66],[56,65]],[[7,77],[8,88],[78,87]]])

Python 科学计算库 NumPy 基本操作

当打印数组时,NumPy以与嵌套列表类似的方式显示它,具有以下布局:

  • 最后一个轴从左到右打印,
  • 倒数第二个从上到下打印,
  • 其余的也从上到下打印,每个切片与下一个用空行分开。

一维数组被打印为行、二维为矩阵和三维为矩阵列表。

如下是ndarray的一维、二维、三维 数组的可视化表示。

Python 科学计算库 NumPy 基本操作

ndarray 对象提供的关键属性:

  • ndarray.ndim:数组的轴(维度)的个数。在Python世界中,维度的数量被称为rank。
  • ndarray.shape:数组的维度。这是一个整数的元组,表示每个维度中数组的大小。对于有n行和m列的矩阵,shape将是(n,m)。因此,shape元组的长度就是rank或维度的个数 ndim。
  • ndarray.size:数组元素的总数。这等于shape的元素的乘积。
  • ndarray.dtype:一个描述数组中元素类型的对象。可以使用标准的Python类型创建或指定dtype。另外NumPy提供它自己的类型。例如numpy.int32、numpy.int16和numpy.float64。
  • ndarray.itemsize:数组中每个元素的字节大小。例如,元素为 float64 类型的数组的 itemsize 为8(=64/8),而 complex32 类型的数组的 itemsize 为4(=32/8)。它等于 ndarray.dtype.itemsize 。
  • ndarray.data:该缓冲区包含数组的实际元素。通常,我们不需要使用此属性,因为我们将使用索引访问数组中的元素。

Python 科学计算库 NumPy 基本操作

ones 和 zeros 系列函数

通常,数组的元素最初是未知的,但它的大小是已知的。因此,NumPy提供了几个函数来创建具有初始占位符内容的数组。这就减少了数组增长的必要,因为数组增长的操作花费很大。

函数 zeros 创建一个由0组成的数组,函数 ones 创建一个由1数组的数组,函数 empty 内容是随机的并且取决于存储器的状态。默认情况下,创建的数组的dtype是 float64。

操作示例如下:

>>> np.zeros((3,4))

array([[0., 0., 0., 0.],

[0., 0., 0., 0.],

[0., 0., 0., 0.]])

>>> np.ones((2,3,4), dtype=np.int16)

array([[[1, 1, 1, 1],

[1, 1, 1, 1],

[1, 1, 1, 1]],

[[1, 1, 1, 1],

[1, 1, 1, 1],

[1, 1, 1, 1]]], dtype=int16)

>>> np.empty((2,3))

array([[5.2, 3. , 4.5],

[9.1, 0.1, 0.3]])

arange函数创建数组

要创建数字序列,NumPy提供了一个类似于 range 的函数,该函数返回数组而不是列表。

arange函数为 arrange(start=None, stop=None, step=None, dtype=None),根据start 与 stop 指定的范围以及step 设定的步长,生成一个 ndarray。

>>> np.arange(12)

array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11])

>>> np.arange(1,2,0.1)

array([1. , 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9])

reshape 函数更改数组形状

a=np.arange(24).reshape(4,3,2)

Python 科学计算库 NumPy 基本操作

T 转置操作

b=a.T

Python 科学计算库 NumPy 基本操作

相关推荐