[英]1 in each row of an all zeros numpy array at particular column index given by another numpy array
I have an array of some given size eg 4x4 with all zeros,我有一个给定大小的数组,例如全为零的 4x4,
a = np.zeros((4,4))
and I want to put 1 in each row at the column index given by another array我想在另一个数组给出的列索引处的每一行中放置 1
b = np.array([0,1,2,1])
so the resulted array should look like this,所以结果数组应该是这样的,
a =
1 0 0 0
0 1 0 0
0 0 1 0
0 1 0 0
How can I do this for a large array of size (mxn)
given b of size (mx1)
.对于给定 b 的大小
(mx1)
的大数组(mxn)
,我该如何做到这一点。
Thank You and Best Regards,感谢你并致以真诚的问候,
You can use this simple way of indexing 2D array:您可以使用这种简单的方法来索引二维数组:
>>> a[np.arange(len(a)), b] = 1
>>> a
array([[1., 0., 0., 0.],
[0., 1., 0., 0.],
[0., 0., 1., 0.],
[0., 1., 0., 0.]])
Loop through rows in a
and values in b
using zip()
:使用
zip()
遍历 a 中的行和b
中a
值:
for row, idx in zip(a, b):
row[idx] = 1
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.