Numpy简介:Python科学计算基础包的核心功能与应用场景详解

一、Numpy简介

Numpy简介:Python科学计算基础包的核心功能与应用场景详解

NumPy 是 Python 中用于科学计算的基础包。它是一个 Python 库。这个库提供了多维数组对象。还提供了各种派生对象,像掩码数组和矩阵等。并且提供了用于数组快速操作的各种 API。这些 API 涵盖了数学、逻辑、形状操作、排序、选择、输入输出、离散傅立叶变换、基本线性代数、基本统计运算和随机模拟等方面。

NumPy 包的核心部分是 ndarray 对象。它把 python 原生的具有相同数据类型的 n 维数组进行了封装。为了确保其性能良好,许多操作都是先由代码在本地进行编译,然后再执行的。

numpy 数组在创建时大小是固定的。python 数组(list)具有动态性。如果要更改 ndarray 的大小,就会创建一个新的数组,同时删除原来的数组。

1. NumPy数组与Phthon List类型区别。

Python 的原生数组包含 NumPy 的对象时,这种情况允许不同大小元素的数组。

2. 安装

pip install numpy

二、ndarray基本知识

NumPy 的主要对象是同构多维数组。它是一个元素表,通常是数字,且所有元素类型相同。这个数组由非负整数元组来索引。在 NumPy 的维度中,这些维度被称为轴。

3D 空间里点的坐标[1, 2, 1]拥有一个轴。这个轴包含 3 个元素,故而我们称其长度为 3。在下面所展示的例子当中,数组有 2 个轴。其中第一轴的长度是 2,第二轴的长度是 3。

[[ 1., 0., 0.],
 [ 0., 1., 2.]]

NumPy 的数组类被称作 ndarray ,它还有一个别名叫做 array ,然而它和 Python 的 array 是不一样的。

1. ndarray的属性

ndarray 的 ndim 表示 NumPy 数组中 axes 的个数;ndarray 的 shape 表示数组的维度;ndarray 的 size 表示数组元素的个数;ndarray 的 dtype 表示元素的数据类型,为 object;ndarray 的 itemsize 表示数组中每个元素的字节大小,等同于 ndarray.dtype.itemsize,也就是数据类型的长度。

三、简单使用

1. 使用示例

import numpy as np
使用 np.arange(15) 创建一个包含 0 到 14 的一维数组,然后将其重塑为 3 行 5 列的二维数组,赋值给变量 a 。
print(a) 
''' 结果
[[ 0 1 2 3 4]
 [ 5 6 7 8 9]
 [10 11 12 13 14]]
'''
打印出 a 的形状、维度、数据类型名称、每个元素的大小以及元素的总数。a 的形状为(3, 5),维度为 2,数据类型名称为 int64,每个元素的大小为 8,元素的总数为 15。
print(type(a)) #
b = np.array([6, 7, 8]) 
print(b) # [6 7 8]
print(type(b)) # 

2. 创建数组

从python元组或数组中创建

a = np.array(1,2,3,4) # WRONG
a 是一个数组,其元素为[1,2,3,4]  # RIGHT

将序列的序列转成二维数组

b 是一个数组,它由两个子数组组成,第一个子数组为 (1.5, 2, 3),第二个子数组为 (4, 5, 6) 。
>>> b
array([[ 1.5, 2. , 3. ],
 [ 4. , 5. , 6. ]])
### 创建NumPy数组时指定类型
创建了一个数组 c,该数组是通过 np.array 函数生成的,其元素为 [ [1,2], [3,4] ],并且数据类型被指定为 complex 。
## 3. 创建特殊数组
### 创建全0数组

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

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

### 创建全1数组

创建一个形状为(2, 3, 4)的数组,数据类型为 np.int16 。 这个数组的维度是 3 维,第一维大小为 2 ,第二维大小为 3 ,第三维大小为 4 。 每个元素都是整数类型,占用 2 个字节的内存空间。 它可以用于各种数值计算和数据存储的场景。

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 生成一个形状为(2,3)的空数组,此数组未初始化,其输出结果可能会有所不同。

数组中包含三个元素,第一个元素的值为 3.73603959e-262,第二个元素的值为 6.02658058e-154,第三个元素的值为 6.55490914e-260。

[5.30498948 乘以 10 的-313 次方,3.14673309 乘以 10 的-307 次方,1.00000000 乘以 10 的 0 次方]

创建range数组(第3个参数是步长)

np.arange( 10, 30, 5 )
array([10, 15, 20, 25])

创建序列,第3个参数是元素个数

数组包含 0. 、0.25、0.5 、0.75、1. 、1.25、1.5 、1.75、2. 这些数值

四、基础操作

1. 元素按位 加 减 乘 除

import numpy as np
np 生成了一个数组,数组中的元素分别为 20、30、40、50,该数组被赋值给变量 a
b = np.arange(4)
print(b)
c = a - b
print(c)
print(b ** 2)
print(10 * np.sin(a))
print(a < 20)
A = np.array([[1, 1], [0, 1]])

输出:

[0 1 2 3]
[20 29 38 47]
[0 1 4 9]
[9.12945251, -9.88031624, 7.4511316, -2.62374854] 分别是四个不同的数值,9.12945251 是其中之一,-9.88031624 是另一个,7.4511316 又是一个,-2.62374854 为最后一个。
[False False False False]

2. 矩阵乘法

* 按元素进行运算

import numpy as np
a = np.array([20, 30, 40, 50])
b = np.arange(4)
print(a*b) #[ 0 30 80 150]

矩阵乘积 @或.dot

import numpy as np
a = np.array([20, 30, 40, 50])
b = np.arange(4)
print(a@b) # 260
print(a.dot(b)) # 260

3. 聚合函数

import numpy as np
b 是通过 np.arange(12)生成的数组,然后将其重塑为 3 行 4 列的形状。
'''
输出
[[ 0 1 2 3]
 [ 4 5 6 7]
 [ 8 9 10 11]]
'''
print(b)
打印(b 的总和,按轴 0 进行计算),结果为[12 15 18 21]
打印 b 沿轴 1 的最小值。结果为 [0 4 8]。

五、普通函数universal functions

按元素计算的普通函数:

sin 相关内容;cons 相关内容;exp 相关内容;all 相关内容;any 相关内容;apply_along_axis 相关内容;argmax 相关内容;argmin 相关内容;argsort 相关内容;average 相关内容;bincount 相关内容;ceil 相关内容;clip 相关内容;conj 相关内容;corrcoef 相关内容;cov 相关内容;cross 相关内容;cumprod 相关内容;cumsum 相关内容;diff 相关内容;dot 相关内容;floor 相关内容;inner 相关内容;INV 相关内容;lexsort 相关内容;max 相关内容;maximum 相关内容;mean 相关内容;median 相关内容;min 相关内容;minimum 相关内容;nonzero 相关内容;outer 相关内容;prod 相关内容;re 相关内容;round 相关内容;sort 相关内容;std 相关内容;sum 相关内容;trace 相关内容;transpose 相关内容;var 相关内容;vdot 相关内容;vectorize 相关内容;where 相关内容。

测试

numpy 对 a 进行操作,包含轴信息 axis 等,输出到 out ,保持维度 keepdims 等情况。

沿轴与操作(全非0就返回True)。

numpy 对数组 a 进行操作,在指定的轴 axis 上进行判断,结果存储在 out 中,是否保持维度 keepdims 由参数决定,只要数组 a 中存在一个元素满足条件,就返回 True,否则返回 False

沿轴或操作(有一个非0就返回True)。

numpy 沿着指定的轴 axis 对数组 arr 应用函数 func1d ,同时可以传递额外的参数 *args 和关键字参数 **kwargs 。

沿轴进行func1d操作。

numpy 对数组 a 进行操作,其中指定了轴 axis 为 None ,结果存储在 out 中,该操作是找出数组 a 中沿指定轴的最大值的索引

沿轴最大值的索引。

numpy.argmax(a, axis=None, out=None)

沿轴最小值的索引。

np.average

沿轴计算平均值。

numpy 执行 bincount 操作,参数为 x,还可以有可选参数 weights 以及 minlength 且其默认值为 0

遍历数组 x 。创建一个新的数组 y ,其长度为 x 中的最大值。对于 x 中的每一个元素,执行以下操作:如果是 y[x[i]] += 1 ;如果是 y[x[i]] += widht[i] 。

numpy.ceil

向上取整。

numpy 对 a 进行裁剪操作,将其限制在 a_min 和 a_max 之间,输出结果存储在 out 中,如果 out 未指定,则在原数组 a 上进行修改

把数组限制在指定的区间内

numpy 对 x 进行共轭操作,结果可以通过 out 指定输出位置,where 条件决定是否执行该操作,casting 用于指定类型转换规则,order 表示数组的内存布局,dtype 可指定输出数据类型,subok 决定返回的数组是否为子类类型,签名和外部对象用于特定的功能扩展。

返回共轭复数。

numpy 进行累积乘积操作,参数为 a,还可以指定轴 axis ,指定数据类型 dtype ,以及输出结果的数组 out 。

沿着轴把元素一个个相乘,并记录中间结果

numpy 对数组 a 进行累积求和操作,可指定轴 axis ,也可指定数据类型 dtype ,还可将结果输出到 out 数组中 。

沿着轴把元素一个个相加,并记录中间结果

numpy.diff(a, n=1, axis=-1)

对相邻的元素沿着轴做差,规则是:out[n]等于 a[n+1]减去 a[n]

numpy.inner(a,b)

内积

六、索引、切片、迭代

1. 一维数组

import numpy as np
a = np.arange(10) ** 3
打印(a),其结果为[0, 1, 8, 27, 64, 125, 216, 343, 512, 729]
print(a[2]) # 8
print(a[2:5]) # [ 8 27 64]
a[:6:2] = -1000 
a 的索引从 0 开始到 6 结束,每隔 2 个元素将其设置为 -1000,即 a[0] = -1000,a[2] = -1000,a[4] = -1000
这是一个包含多个数字的列表,分别为[-1000, 1, -1000, 27, -1000, 125, 216, 343, 512, 729]
打印(a 的逆序)。[729, 512, 343, 216, 125, -1000, 27, -1000, 1, -1000]

2. 多维数组(重点)

import numpy as np
def f(x, y):
 return 10 * x + y
使用函数 f 生成一个形状为(5, 4)的数组 b,数组的数据类型为整数 int
print(b)
'''
[[ 0 1 2 3]
 [10 11 12 13]
 [20 21 22 23]
 [30 31 32 33]
 [40 41 42 43]]
'''
print(b[2, 3]) # 23
打印 b 的第 0 行到第 4 行以及第 1 列的元素,其结果为[1, 11, 21, 31, 41]
打印 b 数组的第二列,即 [ 1 11 21 31 41]
print(b[1:3, :])
'''
[[10 11 12 13]
 [20 21 22 23]]
'''
print(b[-1]) # [40 41 42 43]
for row in b:
 print(row)
'''
[0 1 2 3]
[10 11 12 13]
[20 21 22 23]
[30 31 32 33]
[40 41 42 43]
'''

3. dots(...)

dots(...)表示许多个.

比如说 x 是一个5轴的数组,那么:

x[...,3] to x[:,:,:,:,3] and
x[4,...,5,:] to x[4,:,:,5,:]

七、数组形状

vel() / reshape() / T

随机给定一个数组的形状

resize() 函数会改变原来数组的形状

八、不同数组的堆叠

你可能想看:
« 上一篇
下一篇 »

相关推荐

python爬虫教程PDF,Python爬虫书PDF

2026年09月02日

31阅读

外国教程python,python编程教学视频

2026年09月02日

25阅读

python简明教程沈洁元,python详细基础教程

2026年09月02日

21阅读

python库包教程,python 包

2026年09月02日

26阅读

python教程大全集,python教程600集

2026年09月02日

26阅读

python入门教程完整版,python零基础入门全套教程视频

2026年09月02日

22阅读