首页 > 解决方案 > 使用 Numpy.eye 创建一个二维数组,其中包含自定义值 0 和自定义对角线

问题描述

简而言之,我正在尝试使用 np.eye 创建一个二维数组,其中 0 和对角线具有自定义值。

我想对角线,如果我这样做

a=np.eye(4) b=1.8*a

对角线变为 1.8 但更改 0 对我来说仍然是个谜。先感谢您!

标签: pythonnumpy

解决方案


因为您想要一些其他值而不是0(对角线之外),所以您不能将函数基于eye,而是基于full,然后使用diag_indices将对角线元素设置为您的自定义值。

因此,将您的功能定义为:

def customEye(N : int, diagVal : float, otherVal : float):
    a = np.full((N, N), otherVal)
    a[np.diag_indices(N)] = diagVal
    return a

然后,当你调用arr = customEye(4, 1.8, 0.5)结果是:

array([[1.8, 0.5, 0.5, 0.5],
       [0.5, 1.8, 0.5, 0.5],
       [0.5, 0.5, 1.8, 0.5],
       [0.5, 0.5, 0.5, 1.8]])

推荐阅读