eye()
方法创建一个 2D 数组,其对角线元素为 1,其余元素为 0。
示例
import numpy as np
# create a 3x3 array with 1s in diagonal and 0s elsewhere
array1 = np.eye(3)
print(array1)
'''
Output:
[[1. 0. 0.]
[0. 1. 0.]
[0. 0. 1.]]
'''
eye() 语法
eye()
的语法是
numpy.eye(N, M = None, k = 0, dtype = float, order = 'C')
注意:这里 M = None
表示默认情况下 M = N
。
eye() 参数
eye()
方法接受以下参数
N
- 输出的行数(可以是int
)M
(可选)- 输出的列数(可以是int
)k
(可选)- 指定的对角线(可以是int
)dtype
(可选)- 结果数组的数据类型order
(可选)- 数组的内存布局(可以是'C'
或'F'
)
注意事项:
- 默认情况下
k
= **0**,表示主对角线。 k
> **0** 表示主对角线上方的对角线k
< **0** 表示主对角线以下的对角线。
eye() 返回值
eye()
方法返回形状为 NxM 的结果数组,其中除了第 k 条对角线上的元素为 1 外,所有其他元素都为 0。
示例 1:使用 eye() 创建一个方阵
import numpy as np
# create a square 2x2 array with 1s at diagonal
array1 = np.eye(2)
print('2x2 square array\n', array1)
# create a square 2x2 array with 1 above diagonal
array2 = np.eye(2, k=1)
print('2x2 square array with k = 1\n', array2)
# create a square 2x2 array with 1 below diagonal
array3 = np.eye(2, k=-1)
print('2x2 square array with k = -1\n', array3)
输出
2x2 square array [[1. 0.] [0. 1.]] 2x2 square array with k = 1 [[0. 1.] [0. 0.]] 2x2 square array with k = -1 [[0. 0.] [1. 0.]]
示例 2:使用 eye() 创建一个非方阵
如果我们将 N
和 M
都作为参数传递,则会创建一个非方阵。
让我们看一个例子。
import numpy as np
# create a 2x3 array with 1s at diagonal
array1 = np.eye(2, 3)
print('2x3 array\n', array1)
# create a 3x2 array with 1s at diagonal
array2 = np.eye(3, 2)
print('3x2 array\n', array2)
输出
2x3 array [[1. 0. 0.] [0. 1. 0.]] 3x2 array [[1. 0.] [0. 1.] [0. 0.]]
示例 3:将可选的 dtype 参数与 eye() 一起使用
可选的 dtype
参数指定了创建数组的数据类型。
让我们看一个例子。
import numpy as np
# create a 2x2 float array
array1 = np.eye(2, )
print('2x2 float array\n', array1)
# create a 2x2 integer array
array2 = np.eye(2, dtype = int)
print('2x2 int array\n', array2)
# create a 2x2 string array
array3 = np.eye(2, dtype = str)
print('2x2 string array\n', array3)
输出
2x2 float array [[1. 0.] [0. 1.]] 2x2 int array [[1 0] [0 1]] 2x2 string array [['1' ''] ['' '1']]
注意:当数组转换为字符串数组时,**0** 会被空字符串替换。
将可选的 order 参数与 eye 一起使用
使用 eye()
时,order 参数有两种可能的选项。
'C'
:C 代表 C 语言风格的顺序,数组按行填充。'F'
:F 代表 Fortran 风格的顺序,数组按列填充。