Python填充矩阵具有特定值

fat*_*dem 3 python matrix

我有2D矩阵,我想用0和1填充它.我有一个列表包含一些值.

例如:

values = [1, 3, 5, 8]
Run Code Online (Sandbox Code Playgroud)

我想创建这个矩阵

matrix = [[0, 1, 0],
          [1, 0, 1],
          [0, 0, 1]]
Run Code Online (Sandbox Code Playgroud)

我用两个嵌套的for循环witf if语句做了这个.值是从0到100的随机整数.我的矩阵将是10*10.有没有办法让这更优雅?

xnx*_*xnx 8

如果您可以使用NumPy,请使用花式索引到数组的展平视图并重新整形:

In [1]: import numpy as np

In [2]: a = np.zeros(9)

In [3]: a
Out[3]: array([ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.])

In [4]: values = [1,3,5,8]

In [5]: a[values] = 1

In [6]: a
Out[6]: array([ 0.,  1.,  0.,  1.,  0.,  1.,  0.,  0.,  1.])

In [7]: a.reshape((3,3))
Out[7]: 
array([[ 0.,  1.,  0.],
       [ 1.,  0.,  1.],
       [ 0.,  0.,  1.]])
Run Code Online (Sandbox Code Playgroud)

如果需要整数数组,请声明aa = np.zeros(9, dtype=int).