2024-09-28 22:52:54 发布
网友
我有一个二维数组:
28 39 52 77 80 66 7 18 24 9 97 68
以及列索引B的向量数组:
1 0 2 0
如何以pythonian的方式,使用基本python或numpy,将a的每一行上与B中的列索引相对应的元素替换为零?你知道吗
我应该得到以下新数组A,每行一个元素(存储在B中的列索引中的元素)替换为零:
28 0 52 0 80 66 7 18 0 0 97 68
谢谢你的帮助!你知道吗
In [117]: A = np.array([[28,39,52],[77,80,66],[7,18,24],[9,97,68]]) In [118]: B = [1,0,2,0]
要从每行中选择一个元素,我们需要使用匹配B的数组对行进行索引:
B
In [120]: A[np.arange(4),B] Out[120]: array([39, 77, 24, 9])
我们可以设置相同的元素:
In [121]: A[np.arange(4),B] = 0 In [122]: A Out[122]: array([[28, 0, 52], [ 0, 80, 66], [ 7, 18, 0], [ 0, 97, 68]])
这最终会使用索引(0,1)、(1,0)、(2,2)、(3,0)对点进行索引。你知道吗
基于列表的“转置”生成相同的对:
In [123]: list(zip(range(4),B)) Out[123]: [(0, 1), (1, 0), (2, 2), (3, 0)]
下面是使用enumerate的一种简单的pythonian方法:
enumerate
for i, j in enumerate(B): A[i][j] = 0
要从每行中选择一个元素,我们需要使用匹配
B
的数组对行进行索引:我们可以设置相同的元素:
这最终会使用索引(0,1)、(1,0)、(2,2)、(3,0)对点进行索引。你知道吗
基于列表的“转置”生成相同的对:
下面是使用
enumerate
的一种简单的pythonian方法:相关问题 更多 >
编程相关推荐