如何用Numpy创建8×8对角为1-100随机自然数的零矩阵?
创建8×8对角线随机自然数数组的解决方案
核心问题纠正
你提到的random.radiant是拼写错误,正确的NumPy随机整数生成函数是np.random.randint;而np.random.rand生成的是0到1之间的浮点数,不符合自然数需求。
方法一:直接生成对角矩阵(最简洁)
利用np.diag()函数直接生成指定对角线值的矩阵,步骤如下:
import numpy as np # 生成8个1~100的随机整数(自然数) diagonal_values = np.random.randint(low=1, high=101, size=8) # 创建8×8矩阵,对角线为随机值,其余元素为0 target_array = np.diag(diagonal_values) print(target_array)
方法二:结合np.eye实现(符合提示要求)
如果必须使用np.eye,可以先生成对角为1的单位矩阵,再替换对角线值:
import numpy as np # 生成随机对角值 diagonal_values = np.random.randint(1, 101, 8) # 生成8×8单位矩阵,将对角线替换为随机值 target_array = np.eye(8) * diagonal_values # 转换为整数类型(因为np.eye默认生成浮点数) target_array = target_array.astype(int) print(target_array)
注意事项
- 在Databricks中确保已正确导入NumPy(上述代码开头的
import numpy as np不可省略) np.random.randint的high参数是开区间,所以要写101才能包含100
内容的提问来源于stack exchange,提问作者Mery p.
相关产品推荐
相关产品推荐

