制作一个零的numpy数组,其中每行有8个零,并且对应于输出的索引变为1

问题描述 投票:0回答:2

我想创建一个零的numpy数组:

Y_numpy = [[0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0],
...]

我有:

Y = [1,2,7,8,3,4,6,7,8,8,8,8,8,4,4,4,6,3,2,3,4,5,6,7,...]

我的目标是将Y_numpy中索引的值更改为'1',该值与每个Y的值相同。

例如:

Y[0] = 1 => Y_numpy[0] = [1,0,0,0,0,0,0,0]
Y[1] = 2 => Y_numpy[1] = [0,1,0,0,0,0,0,0]
Y[2] = 7 => Y_numpy[2] = [0,0,0,0,0,0,1,0]
Y[3] = 8 => Y_numpy[3] = [0,0,0,0,0,0,0,1]
Y[4] = 3 => Y_numpy[4] = [0,0,1,0,0,0,0,0]
Y[5] = 4 => Y_numpy[5] = [0,0,0,1,0,0,0,0]
...

让我知道是否需要其他信息或更多说明。

python numpy
2个回答
0
投票

您在这里:

Y = [1,2,7,8,3,4,6,7,8,8,8,8,8]
Y_numpy = np.array(Y)[:,None] == np.arange(1,9)

输出:

array([[ True, False, False, False, False, False, False, False],
       [False,  True, False, False, False, False, False, False],
       [False, False, False, False, False, False,  True, False],
       [False, False, False, False, False, False, False,  True],
       [False, False,  True, False, False, False, False, False],
       [False, False, False,  True, False, False, False, False],
       [False, False, False, False, False,  True, False, False],
       [False, False, False, False, False, False,  True, False],
       [False, False, False, False, False, False, False,  True],
       [False, False, False, False, False, False, False,  True],
       [False, False, False, False, False, False, False,  True],
       [False, False, False, False, False, False, False,  True],
       [False, False, False, False, False, False, False,  True]])

0
投票
In [179]: Y = [1,2,7,8,3,4,6,7,8,8,8,8,8,4,4,4,6,3,2,3,4,5,6,7]                 
In [180]: len(Y)                                                                
Out[180]: 24
In [181]: Ynum = np.zeros((24,8),int) 

2d数组分配;每行一个值:

In [184]: Ynum[np.arange(24),np.array(Y)-1] = 1                                 
In [185]: Ynum[:6,:]                                                            
Out[185]: 
array([[1, 0, 0, 0, 0, 0, 0, 0],
       [0, 1, 0, 0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0, 0, 1, 0],
       [0, 0, 0, 0, 0, 0, 0, 1],
       [0, 0, 1, 0, 0, 0, 0, 0],
       [0, 0, 0, 1, 0, 0, 0, 0]])
© www.soinside.com 2019 - 2024. All rights reserved.