假设我有以下数组:
@Subscribe
public void onMyEvent(MyEvent myEvent){
String text = myEvent.getText();
//Now you can do whatever you wish with this text
}
现在如何根据数组b指示的列索引在数组a到1的每一行上设置一个元素?我需要的是一个如下所示的数组c:
a = np.zeros([4,3])
b = np.asarray([0,1,2,1])
或者,有没有办法直接将数组b转换为数组c?
答案 0 :(得分:2)
这是advanced indexing的工作:
a[np.arange(a.shape[0]), b] = 1
对于数组A
,I
和J
,其中I
和J
具有整数dtype且形状相同,A[I, J]
选择所有条目A[I[n], J[n]]
的{{1}}。然后,分配将这些条目设置为A
。
答案 1 :(得分:1)
您可以使用c
来b
直接从max
获取b
(b[:,None] == np.arange(b.max()+1)).astype(float)
作为输出数组中的列数,就像这样 -
In [484]: b
Out[484]: array([0, 1, 2, 1])
In [485]: (b[:,None] == np.arange(b.max()+1)).astype(float)
Out[485]:
array([[ 1., 0., 0.],
[ 0., 1., 0.],
[ 0., 0., 1.],
[ 0., 1., 0.]])
示例运行 -
{{1}}