我可以帮助将以下it技术相关内容进行翻译:我有一个二维矩阵,想要填充0和1。同时我有一个包含若干值的列表。
例如:
values = [1, 3, 5, 8]
我想创建这个矩阵
matrix = [[0, 1, 0],
[1, 0, 1],
[0, 0, 1]]
我用两个嵌套的for循环加if语句来创建这个矩阵。数值是从0到100的随机整数。我的矩阵将会是10*10的。有没有更优雅的方法来创建此矩阵呢?
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.]])
a
为a = np.zeros(9, dtype=int)
。[[1 if i*10+j in values else 0 for j in range(10)] for i in range(10)]
values
创建为一个集合。values = set([1, 3, 5, 8])
a = np.zeros(values.max())
。 - Jérômevalues
是一个NumPy数组且所需的数组在其右下角具有1(例如,在此示例中,values.max()
为9),否则a
将没有足够的元素以正确地进行重塑。 - xnx