numpy—np.eye、np.diag与np.tile

1.np.eye

numpy.eye(N, M=None, k=0, dtype=<class 'float'>, order='C')

描述

返回一个二维数组,对角线上为1,其他地方为0

参数

N : int
输出的行数

M : int, optional
输出中的列数。如果为None,默认为N

k : int, optional
对角线索引:0(默认)表示主对角线,正值表示上对角线,负值表示下对角线。

d : type,data-type, optional
返回数组的数据类型

order : {‘C’, ‘F’}, optional
在内存中,输出应该按行主要(c风格)还是列主要(fortran风格)顺序存储

返回

I : ndarray of shape (N,M)
一个数组,其中所有元素均等于零(第k个对角线除外,其值等于1)

实例

np.eye(2, dtype=int)

array([[1, 0],
       [0, 1]])


np.eye(3, k=1)

array([[0.,  1.,  0.],
       [0.,  0.,  1.],
       [0.,  0.,  0.]])

2.np.diag

numpy.diag(v, k=0)

描述

提取对角线或构造对角线数组

参数

v : array_like
如果v是二维数组,则返回其第k个对角线的副本。
如果v是一维数组,则返回一个二维数组,其中v在第k个对角线上

k : int, optional
对角线。默认值为0。使用k>0为主对角线以上的对角线,和k<0为主对角线以下的对角线

返回

提取的对角线数组或构造对角线数组

实例

x = np.arange(9).reshape((3,3))

array([[0, 1, 2],
       [3, 4, 5],
       [6, 7, 8]])


np.diag(x)

array([0, 4, 8])


np.diag(x, k=1)

array([1, 5])


np.diag(x, k=-1)

array([3, 7])


np.diag(np.diag(x))

array([[0, 0, 0],
       [0, 4, 0],
       [0, 0, 8]])

3.np.tile

numpy.tile(A, reps)

描述

通过重复由reps给出的次数来构造一个数组
虽然可以使用tile进行广播,但强烈建议使用numpy的广播操作和函数

参数

A : array_like
输入数组

reps : array_like
A在每个轴上重复的次数

返回

数组

实例

a = np.array([0, 1, 2])

np.tile(a, 2)
array([0, 1, 2, 0, 1, 2])


np.tile(a, (2, 2))
array([[0, 1, 2, 0, 1, 2],
       [0, 1, 2, 0, 1, 2]])


np.tile(a, (2, 1, 2))
array([[[0, 1, 2, 0, 1, 2]],
       [[0, 1, 2, 0, 1, 2]]])


b = np.array([[1, 2], [3, 4]])
np.tile(b, 2)
array([[1, 2, 1, 2],
       [3, 4, 3, 4]])


np.tile(b, (2, 1))
array([[1, 2],
       [3, 4],
       [1, 2],
       [3, 4]])

猜你喜欢

转载自blog.csdn.net/weixin_46649052/article/details/112688291
np