如何为特定行和列中的numpy数组赋值

时间:2016-05-09 09:00:47

标签: python numpy

我想指定一个特定的数组(row,col),其值为1

这是我的代码:

fl = np.zeros((5, 3))
labels = np.random.random_integers(0, 2, (5, 1))
for i in range(5):
    fl[i, labels[i]] = 1

这个过程有一些捷径吗?

2 个答案:

答案 0 :(得分:1)

您可以将labels数组用作布局数组,其中fl.shape为形状。尝试:

import numpy as np
fl = np.zeros((5, 3))
labels = np.random.random_integers(0, 1, fl.shape).astype(bool)
fl[labels] = 1

以下是标签和结果中布尔值数组的样子:

>>> labels
array([[False,  True, False],
   [ True,  True, False],
   [False,  True,  True],
   [ True,  True,  True],
   [ True, False, False]], dtype=bool)

>>> fl
array([[ 0.,  1.,  0.],
   [ 1.,  1.,  0.],
   [ 0.,  1.,  1.],
   [ 1.,  1.,  1.],
   [ 1.,  0.,  0.]])

答案 1 :(得分:1)

这是另一种方法:

import numpy as np
fl = np.zeros((5, 3))
labels = np.random.random_integers(0, 2, 5)
fl[range(0, 5), labels] = 1

它会产生这个输出:

enter image description here