1. 快速创建包含初始值的N维数组的函数:
- arange() – 创建指定数值范围的一维数组,需要指定起始值、终止值和步长,在创建的数组中不包含终止值
- linspace() – 与arange()函数类似,同样需要指定起始值和终止值,再设定数量(num),但是在创建的数组中包含终止值
- logspace() – 与linspace()函数类似,不过logspace()函数是用于创建等比数列,其中起始值与终止值均为10的幂
- zeros() – 创建元素均为“0”的数组;常用参数:shape - 用于指定数组的形状;dtype - 用于指定数值类型,默认值为浮点数(float)
- ones() – 类似于zeros()函数,只是创建的元素均为“1”;常用的参数有:shape和dtype,用法与zeros()一致
- eye() – 用于生成对角线数字为“1”,其他数字为“0”的数组,类似于对角矩阵
- diag() – 与eye()函数类似,但可以指定对角线中的元素,可以是“0”或其他值,而对角线之外的其他元素都为“0”
2. 详细介绍和比较各种函数的用法及示例代码
1. arange() 创建指定数值范围的一维数组,需要指定起始值、终止值和步长,在创建的数组中不包含终止值,数组类型默认为整数类型(int)
import numpy as np
a = np.arange(0, 10, 1)
print(a)
2. linspace() 与arange()函数类似,同样需要指定起始值和终止值,第3个参数是数量(num),但是在创建的数组中会包含终止值
# 对比arange()与linspace()函数的执行结果
a = np.arange(0, 10, 1)
b = np.linspace(10, 20, 5)
c = np.linspace(10, 20, 5, dtype=int)
print("a:", a)
print("b:", b)
print("c:", c)
arange函数与linspace函数的区别有2点:
(1) linspace()在默认情况下,数组中包含终止值,而arange()是不包含终止值的。
(2) linspace()在默认情况下,数组中元素的类型为浮点数,而arange()是整数。
3. logspace() 与linspace()函数类似,不过logspace()函数是用于创建等比数列,其中起始值与终止值均为10的幂
# logspace() 的用法展示
a = np.logspace(0, 9, 10)
b = np.logspace(0, 9, 10, base=2)
c = np.logspace(0, 9, 10, base=2, dtype=int)
d = np.logspace(0, 9, 10, base=3, dtype=int)
print("a:", a)
print("b:", b)
print("c:", c)
print("d:", d)
4. zeros() 创建元素均为0的数组;常用参数:shape - 用于指定数组的形状;dtype - 用于指定数值类型,默认值为浮点数(float)
import numpy as np
a = np.zeros(4)
# 设置shape=(4, 4)
b = np.zeros((4, 4))
display(a, b)
5. ones() 类似于zeros()函数,只是创建的元素均为“1”;常用的参数有:shape和dtype,用法与zeros()基本一致, 可以直接设置shape参数,也可以与reshape()函数搭配使用
# 1. ones()用法与zeros()相类似,也可以与reshape()函数搭配使用
a = np.ones(6).reshape(3, 2)
# 2. 可以设置数组中数字的类型,如int, 默认为float
b = np.ones((3, 3), dtype=int)
print("a:\n", a)
print("b:\n", b)
6. eye() 用于生成对角线数字为“1”,其他数字为“0”的数组,类似于对角矩阵
a = np.eye(3)
b = np.eye(3, dtype=int)
print("a:\n", a)
print("b:\n", b)
7. diag() 与eye()函数类似,但可以指定对角线中的元素,可以是“0”或其他值,而对角线之外的其他元素都为“0”
# 1. diag()的基本用法:创建对角线数据为12345,其他元素为“0”的矩阵
x = np.arange(1, 6, 1)
print("x:\n", x)
print("对角线为12345的矩阵:\n", np.diag(x))
# 2. diag()函数的用法二
x = np.arange(9).reshape((3, 3))
print("x:\n", x)
# 提前并输出x矩阵的对角线上的数据
print("np.diag(x):\n", np.diag(x))
# 对角线上的元素与x矩阵对角线上的元素一致,其他值为"0"的矩阵
print("np.diag(np.diag(x)):\n", np.diag(np.diag(x)))
3. 结束语
总结这些函数的用法比较:
- 创建一维数组的函数:arange(), linspace() 和logspace()
arange()创建的数组中是不包含终止值的,并且数值的默认类型是整数型
linspace()创建的数组中是包含终止值的,而数值的默认类型是浮点数 - 创建N维数组的函数:zeros()和ones()
zeros()与ones()的使用方法基本一致;可以直接设置参数shape, 也可以与reshape()函数搭配使用;数值的默认类型为浮点数 - 创建N维矩阵的函数:eye()和diag()
eye()创建的矩阵对角线上的数都是"1", 数值的默认类型为浮点数
diag()可创建对角线上的数是任何数值,对角线以外的其他元素均为"0"值