赞
踩
NumPy 是 Python 用于科学计算的基础工具库。它主要包含四大功能:
(1)强大的多维数组对象;
(2)复杂的函数功能;
(3)集成 C / C ++和 FORTRAN 代码的工具;
(4)有用的线性代数、傅里叶变换和随机数功能等。
NumPy 提供了两种基本的对象:ndarray 和 ufunc。ndarray 存储单一数据类型的多维数组,ufunc 是能够对数组进行处理的函数。
导入 NumPy 工具库时,一般改变其名称为 np :
import numpy as np
使用 array() 将列表或元组转换为 ndarray 数组,调用格式为:
array(object, dtype=None, copy=True, order='K', subok=False, ndmin=0)
object:表示要转换为 ndarray 数组的列表或元组。
dtype:表示指定转换后的数组的数据类型。默认为 None。
copy:表示是否复制输入的对象。默认为 True,即进行复制。
order:表示创建数组时的存储顺序。默认为 'K',表示数组在内存中以尽可能紧凑的方式存储,即按照最佳存储顺序存储数组。
subok:表示是否允许子类继承 ndarray 类。默认为 False,即不允许。
ndmin:表示要创建的数组的最小维度。默认为 0,即根据输入的对象自动确定数组的维度。
示例代码:
- import numpy as np
-
- # 将列表转换为ndarray数组
- list1 = [1, 2, 3, 4, 5]
- array1 = np.array(list1)
-
- # 将元组转换为ndarray数组
- tuple1 = (6, 7, 8, 9, 10)
- array2 = np.array(tuple1)
-
- # 按指定数据类型生成新的数组
- array3 = array1.astype(float)
-
- # 生成指定数据类型的数组
- list2 = [1.1, 2.2, 3.3, 4.4, 5.5]
- array4 = np.array(list2, dtype=int)
-
- # 指定存储顺序(列优先)和最小维度
- list3 = [[1, 2], [3, 4], [5, 6]]
- array5 = np.array(list3, order='F', ndmin=2)
-
- print(array1); print(array2); print(array3); print(array4); print(array5)
![](https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreWhite.png)
运行结果:
- [1 2 3 4 5]
- [ 6 7 8 9 10]
- [1. 2. 3. 4. 5.]
- [1 2 3 4 5]
- [[1 2]
- [3 4]
- [5 6]]
使用 arrange() 在给定区间内创建等差数组,调用格式为:
arange(start=0, stop=None, step=1, dtype=None)
start:表示等差数组的起始值。如果未指定,则默认为0。
stop:表示等差数组的终止值(不包含在数组中)。
step:表示等差数组的步长。如果未指定,则默认为1。
dtype:表示指定数组的数据类型。默认为 None,即根据输入的值自动推导。
示例代码:
- import numpy as np
-
- # 创建从0到4的等差数组,默认步长为1
- array1 = np.arange(5)
-
- # 创建从2到10的等差数组,步长为2
- array2 = np.arange(2, 11, 2)
-
- # 创建从1到10的等差数组,步长为1.5,指定数据类型为float
- array3 = np.arange(1, 10, 1.5, dtype=float)
-
- print(array1); print(array2); print(array3)
运行结果:
- [0 1 2 3 4]
- [ 2 4 6 8 10]
- [1. 2.5 4. 5.5 7. 8.5]
使用 linspace() 在给定区间内创建 num 个数据的等差数组,调用格式为:
linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)
start:表示等差数组的起始值。
stop:表示等差数组的终止值。
num:表示要生成的等差数组中的数据个数,默认为 50。
endpoint:表示是否将 stop 值包含在数组中,默认为 True,即包含。
retstep:表示是否返回等差步长,默认为 False,即不返回。
dtype:表示指定数组的数据类型,默认为 None,即根据输入的值自动推导。
示例代码:
- import numpy as np
-
- # 创建从0到10的等差数组,包含5个数据
- array1 = np.linspace(0, 10, num=5)
-
- # 创建从2到10的等差数组,包含10个数据,且不包含终止值
- array2 = np.linspace(2, 10, num=10, endpoint=False)
-
- # 创建从1到10的等差数组,包含7个数据,返回步长
- array3, step = np.linspace(1, 10, num=7, retstep=True)
-
- print(array1); print(array2); print(array3, step)
运行结果:
- [ 0. 2.5 5. 7.5 10. ]
- [2. 2.8 3.6 4.4 5.2 6. 6.8 7.6 8.4 9.2]
- [ 1. 2.5 4. 5.5 7. 8.5 10. ] 1.5
使用 logspace() 在给定区间上生成等比数组,调用格式为:
logspace(start, stop, num=50, endpoint=True, base=10.0, dtype=None)
start:表示等比数组的起始值。
stop:表示等比数组的终止值。
num:表示要生成的等比数组中的数据个数,默认为 50。
endpoint:表示是否将 stop 值包含在数组中,默认为 True,即包含。
base:表示等比数列的底数,默认为 10.0,即以 10 为底数。
dtype:表示指定数组的数据类型,默认为 None,即根据输入的值自动推导。
示例代码:
- import numpy as np
-
- # 在10的0次方到10的2次方之间生成包含5个数据的等比数组
- array1 = np.logspace(0, 2, num=5)
-
- # 在2的0次方到2的4次方之间生成包含6个数据的等比数组,且不包含终止值
- array2 = np.logspace(0, 4, num=6, endpoint=False, base=2)
-
- # 在1的-2次方到1的2次方之间生成包含7个数据的等比数组,以e为底数
- array3 = np.logspace(-2, 2, num=7, base=np.e)
-
- print(array1); print(array2); print(array3)
运行结果:
- [ 1. 3.16227766 10. 31.6227766 100. ]
- [ 1. 1.58740105 2.5198421 4. 6.34960421 10.0793684 ]
- [0.13533528 0.26359714 0.51341712 1. 1.94773404 3.79366789
- 7.3890561 ]
使用 ones() 生成指定维数,元素值全为 1 的数组,调用格式为:
ones(shape, dtype=None, order='C')
shape:表示生成数组的形状,可以是一个整数,表示生成一个一维数组,或者是一个整数元组,表示生成一个多维数组。
dtype:表示指定数组的数据类型,默认为 None,即使用默认的数据类型。
order:表示数组在内存中的存储顺序,默认为 'C',表示按行存储。
示例代码:
- import numpy as np
-
- # 生成一个一维数组,包含5个元素,元素值全部为1
- array1 = np.ones(5)
-
- # 生成一个二维数组,形状为(3, 4),元素值全部为1
- array2 = np.ones((3, 4))
-
- # 生成一个三维数组,形状为(2, 3, 2),元素值全部为1
- array3 = np.ones((2, 3, 2))
-
- print('array1:\n',array1); print('array2:\n',array2); print('array3:\n',array3)
运行结果:
- array1:
- [1. 1. 1. 1. 1.]
- array2:
- [[1. 1. 1. 1.]
- [1. 1. 1. 1.]
- [1. 1. 1. 1.]]
- array3:
- [[[1. 1.]
- [1. 1.]
- [1. 1.]]
-
- [[1. 1.]
- [1. 1.]
- [1. 1.]]]
zeros() 和 empty() 的用法与 ones() 相同,只不过 zeros() 生成数组的元素值全为 0 ,empty()生成数组元素的值是随机数。
使用 eyes() 生成指定维数,指定对角线元素值全为 1 的数组,调用格式为:
eye(N, M=None, k=0, dtype=float, order='C')
N:表示生成数组的行数(或列数,如果 M 未指定)。
M:可选参数,表示生成数组的列数,默认为 None,即默认与行数 N 相等。
k:可选参数,表示从主对角线偏移的次数,默认为 0,表示主对角线。k为正值表示主对角线向上偏移,k为负值表示主对角线向下偏移。
dtype:表示指定数组的数据类型,默认为 float。
order:表示数组在内存中的存储顺序,默认为 'C',表示按行存储。
示例代码:
- import numpy as np
-
- # 生成一个形状为(3, 3)的二维数组,主对角线上的元素值为1,其余元素值为0
- array1 = np.eye(3)
-
- # 生成一个形状为(4, 5)的二维数组,主对角线上的元素值为1,其余元素值为0
- array2 = np.eye(4, 5)
-
- # 生成一个形状为(5, 5)的二维数组,主对角线上的元素值为1,上方和下方各偏移一次的对角线上元素值为1
- array3 = np.eye(5, k=1)
-
- # 生成一个形状为(3, 3)的二维数组,数据类型为整数,主对角线上的元素值为1,其余元素值为0
- array4 = np.eye(3, dtype=int)
-
- # 生成一个形状为(3, 3)的二维数组,以列优先方式存储,主对角线上的元素值为1,其余元素值为0
- array5 = np.eye(3, order='F')
-
- print('array1:\n',array1); print('array2:\n',array2); print('array3:\n',array3); print('array4:\n',array4); print('array5:\n',array5)
![](https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreWhite.png)
运行结果:
- array1:
- [[1. 0. 0.]
- [0. 1. 0.]
- [0. 0. 1.]]
- array2:
- [[1. 0. 0. 0. 0.]
- [0. 1. 0. 0. 0.]
- [0. 0. 1. 0. 0.]
- [0. 0. 0. 1. 0.]]
- array3:
- [[0. 1. 0. 0. 0.]
- [0. 0. 1. 0. 0.]
- [0. 0. 0. 1. 0.]
- [0. 0. 0. 0. 1.]
- [0. 0. 0. 0. 0.]]
- array4:
- [[1 0 0]
- [0 1 0]
- [0 0 1]]
- array5:
- [[1. 0. 0.]
- [0. 1. 0.]
- [0. 0. 1.]]
![](https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreWhite.png)
使用 ones_like() 函数生成一个与给定数组具有相同形状和数据类型的数组,调用格式为:
ones_like(a, dtype=None, order='K', subok=True, shape=None)
a:表示输入的数组,用于确定生成数组的形状和数据类型。
dtype:可选参数,表示指定生成数组的数据类型,默认为 None,即与输入数组的数据类型相同。
order:表示数组在内存中的存储顺序,默认为 'K',即使用输入数组的存储顺序。
subok:表示生成的数组是否允许子类化,默认为 True,允许子类化。
shape:可选参数,表示生成数组的形状,默认为 None,即与输入数组的形状相同。
示例代码:
- import numpy as np
-
- # 生成一个与输入数组 a 形状相同的数组,元素值都为1
- a = np.array([[2, 3, 4], [5, 6, 7]])
- array1 = np.ones_like(a)
-
- # 生成一个与输入数组 a 形状相同的数组,元素值都为1,数据类型为整数
- array2 = np.ones_like(a, dtype=int)
-
- # 生成一个与输入数组 a 形状相同的数组,元素值都为1,存储顺序为列优先
- array3 = np.ones_like(a, order='F')
-
- # 生成一个与输入数组 a 形状相同的数组,元素值都为1,不允许子类化
- array4 = np.ones_like(a, subok=False)
-
- # 生成一个形状为 (3, 2) 的数组,元素值都为1
- array5 = np.ones_like(a, shape=(3, 2))
-
- print('array1:\n',array1); print('array2:\n',array2); print('array3:\n',array3); print('array4:\n',array4); print('array5:\n',array5)
![](https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreWhite.png)
运行结果:
- array1:
- [[1 1 1]
- [1 1 1]]
- array2:
- [[1 1 1]
- [1 1 1]]
- array3:
- [[1 1 1]
- [1 1 1]]
- array4:
- [[1 1 1]
- [1 1 1]]
- array5:
- [[1 1]
- [1 1]
- [1 1]]
![](https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreWhite.png)
zeros_like() 函数用法与ones_like() 函数相同,只不过元素值为0。
二维数组元素的引用方式为a[i][j]或a[i,j],下面四种索引均以以下的二维数组为例:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。