Python Numpy使用多维数组索引一维数组

Python Numpy使用多维数组索引一维数组,python,arrays,numpy,array-broadcasting,numpy-indexing,Python,Arrays,Numpy,Array Broadcasting,Numpy Indexing,我不理解以下代码,即代码的最后一部分 max = np.max(rel_coords, axis=0) min = np.min(rel_coords, axis=0) bins = [np.arange(low, high) for low, high in zip(min, max)] new_coord = np.array(np.meshgrid(*bins)).T coord_norms = norm(new_coord, axis=-1).round().astype(int) b

我不理解以下代码,即代码的最后一部分

max = np.max(rel_coords, axis=0)
min = np.min(rel_coords, axis=0)
bins = [np.arange(low, high) for low, high in zip(min, max)]

new_coord = np.array(np.meshgrid(*bins)).T
coord_norms = norm(new_coord, axis=-1).round().astype(int)
bin_count = np.bincount(coord_norms.flatten())
new_count = bin_count[coord_norms]
有人能解释一下我如何使用二维数组(坐标)为一维数组(bin_计数)编制索引吗? 我确实了解numpy广播和高级索引,但我想了解本案的幕后情况。bin_count是否首先以与coord_标准相同的形状广播?
Python如何分配新数据中的值?

具体来说,bin_count是形状(12,)和coord_范数是形状(16,16),换句话说,没有广播魔法在起作用。如果您有一个数组
arr
,并使用数组
b
进行索引,那么输出形状自然会跟随索引形状。如果
b
只是一个标量,那么输出就是一个标量。如果
b
是1D数组,则输出将是1D数组。以此类推。好的,coord_范数[i,j]的计算值为5。然后使用这个值(5),使得新的_计数[i,j]=bin_计数[5]?如果coord_范数[i,j]计算为12,但bin_计数只有5个元素,会发生什么。这会引起索引器吗?没错。如果
a=np.array([5,6])
,那么
a[[0,1],[0,1]]]
(一个二维索引)将计算为
[[5,6],[5,6]]