Python库numpy之三
Python库numpy之三
- # NumPy数组创建函数
- 二维数组创建函数
- numpy.eye
- 应用例子
- numpy.diag
- 应用例子
- numpy.vander
- 应用例子
# NumPy数组创建函数
二维数组创建函数
numpy.eye
词法:numpy.eye(N, M=None, k=0, dtype=<class ‘float’>, order=‘C’, *, device=None, like=None)
numpy.eye产生一个二维数组,对角线上的值为 1,其他位置的值为0。
变量说明
-
N,该参数类型是int
N是输出二维数组的行数 -
M,该参数类型是int, 是可选的
M是输出二维数组的列数。如果None,则默认为参数N -
k,该参数类型是int, 是可选的
对角线索引:
0,表示主对角线,
正值,表示上对角线,
负值,表示下对角线。 -
dtype,该参数类型是data-type, 是可选的
返回数组的数据类型 -
order,该参数类型是{‘C’, ‘F’}, 是可选的
输出数组的存储方式
‘C’,以行优先顺序存储在内存中,C 风格
’F‘,以列优先顺序存储在内存中,Fortran 风格 -
device,该参数类型是字符串, 是可选的
用于放置创建的阵列的设备。默认值:None。
仅适用于 Array-API 互操作性,因此如果通过,则必须为“cpu”。 -
like,该参数类型是array_like, 是可选的
允许创建非 NumPy 数组的引用对象。如果以参数like传入的数组支持 array_function 协议,则结果将由它定义。在这种情况下,它确保创建一个与通过此参数传入的数组对象兼容的数组对象。
应用例子
import numpy as np
if __name__ == "__main__":
m0 = np.eye(2, dtype=int)
m1 = np.eye(4, k=0)
m2 = np.eye(4, k=1)
m3 = np.eye(4, k=-1)
print(m0)
print("-*-"*8)
print(m1)
print("-*-"*8)
print(m2)
print("-*-"*8)
print(m3)
程序运行的屏幕输出
[[1 0]
[0 1]]
-*--*--*--*--*--*--*--*-
[[1. 0. 0. 0.]
[0. 1. 0. 0.]
[0. 0. 1. 0.]
[0. 0. 0. 1.]]
-*--*--*--*--*--*--*--*-
[[0. 1. 0. 0.]
[0. 0. 1. 0.]
[0. 0. 0. 1.]
[0. 0. 0. 0.]]
-*--*--*--*--*--*--*--*-
[[0. 0. 0. 0.]
[1. 0. 0. 0.]
[0. 1. 0. 0.]
[0. 0. 1. 0.]]
numpy.diag
词法:numpy.diag(v, k=0)
numpy.diag提取对角线或构造对角线数组。
-
v,该参数类型是类数组
如果 v 是二维数组,则返回其第 k 个对角线的副本。如果 v 是一维数组,则返回 v 在第 k 对角线上的二维数组。 -
k,该参数类型是int, 是可选的
应用例子
import numpy as np
if __name__ == "__main__":
x = np.arange(9).reshape((3,3))
y = np.diag(x)
z = np.diag(y)
print(x)
print("-*-" * 8)
print(y)
print("-*-" * 8)
print(z)
x1 = np.arange(16).reshape((4,4))
y1 = np.diag(x1, k=1)
z1 = np.diag(x1, k=0)
print("-*-" * 8)
print(x1)
print("-*-" * 8)
print(y1)
print("-*-" * 8)
print(z1)
程序运行的屏幕输出
C:\>python numpy_6.py
[[0 1 2]
[3 4 5]
[6 7 8]]
-*--*--*--*--*--*--*--*-
[0 4 8]
-*--*--*--*--*--*--*--*-
[[0 0 0]
[0 4 0]
[0 0 8]]
-*--*--*--*--*--*--*--*-
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]
[12 13 14 15]]
-*--*--*--*--*--*--*--*-
[ 1 6 11]
-*--*--*--*--*--*--*--*-
[ 0 5 10 15]
numpy.vander
词法:numpy.vander(x, N=None, increasing=False)
生成范德蒙矩阵。
输出矩阵的列是输入向量的幂。幂的顺序由递增布尔参数决定。具体来说,当increase为False时,第i个输出列是输入向量按元素求N - i - 1次方。这种每行都呈几何级数的矩阵就是范德蒙。
- x,该参数类型是类数组
- N,该参数类型是int, 是可选的
- increasing,该参数类型是bool, 是可选的
应用例子
import numpy as np
if __name__ == "__main__":
arr = np.array([1, 2, 3, 5])
m1 = np.vander(arr, N=3)
m2 = np.vander(arr)
m3 = np.vander(arr, N=3, increasing=True)
print(arr)
print("-*-" * 8)
print(m1)
print("-*-" * 8)
print(m2)
print("-*-" * 8)
print(m3)
C:\>python numpy_7.py
[1 2 3 5]
-*--*--*--*--*--*--*--*-
[[ 1 1 1]
[ 4 2 1]
[ 9 3 1]
[25 5 1]]
-*--*--*--*--*--*--*--*-
[[ 1 1 1 1]
[ 8 4 2 1]
[ 27 9 3 1]
[125 25 5 1]]
-*--*--*--*--*--*--*--*-
[[ 1 1 1]
[ 1 2 4]
[ 1 3 9]
[ 1 5 25]]