APP下载

Python 科学计算库 NumPy 基本操作

消息来源:baojiabao.com 作者: 发布时间:2024-05-20

报价宝综合消息Python 科学计算库 NumPy 基本操作

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

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

检视NumPy 版本

import numpy as np

print(np.__version__)

输出结果:1.16.2

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

NumPy的阵列为ndarray

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

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

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

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

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]]])

当打印阵列时,NumPy以与巢状列表类似的方式显示它,具有以下布局:

最后一个轴从左到右打印,倒数第二个从上到下打印,其余的也从上到下打印,每个切片与下一个用空行分开。一维阵列被打印为行、二维为矩阵和三维为矩阵列表。

如下是ndarray的一维、二维、三维 阵列的视觉化表示。

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:该缓冲区包含阵列的实际元素。通常,我们不需要使用此属性,因为我们将使用索引访问阵列中的元素。

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)

T 转置操作

b=a.T

2019-10-28 23:57:00

相关文章