Python 用不规则的索引列表numpy对某些索引和轴求和
我想改进一个代码,在这里我必须对不同的索引求和。代码如下:Python 用不规则的索引列表numpy对某些索引和轴求和,python,numpy,axis,indices,Python,Numpy,Axis,Indices,我想改进一个代码,在这里我必须对不同的索引求和。代码如下: neighbors = [[1,2,4],[2,0],[1,3],[],[0]] omega = np.random((5,5,3,3)) #Sum over indices 0 (filtered) and 2 suma = np.zeros((5,3)) for j in range(5): for l in range(3): suma[j,l] += np.sum(omega[neighbors[j]
neighbors = [[1,2,4],[2,0],[1,3],[],[0]]
omega = np.random((5,5,3,3))
#Sum over indices 0 (filtered) and 2
suma = np.zeros((5,3))
for j in range(5):
for l in range(3):
suma[j,l] += np.sum(omega[neighbors[j],j,:,l])
现在,我使用sum的axis参数对代码进行了一些改进:
suma2 = np.zeros((5,3))
for j in range(5):
suma2[j,:] += np.sum(omega[neighbors[j],j,:,:],axis=(0,1))
我想知道如何避免第一个循环。我尝试创建一个布尔数组:
neighbors_bool = np.full((5,5),False,dtype=bool)
for j in range(5):
neighbors_bool[neighbors[j],j] = True
但是我不知道如何把它放在总和中。相邻的
子列表的大小从0到3不等,这一事实很好地表明每个子列表都必须单独处理。有关更多详细信息,请参见最近的问题:邻居的子列表大小从0到3不等,这一事实很好地表明每个子列表都必须单独处理。有关更多详细信息,请参见最近的问题: