Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用NumPy argsort和take-in二维数组_Python_Arrays_Sorting_Numpy_Distance - Fatal编程技术网

Python 使用NumPy argsort和take-in二维数组

Python 使用NumPy argsort和take-in二维数组,python,arrays,sorting,numpy,distance,Python,Arrays,Sorting,Numpy,Distance,目的是计算两组点(set1和set2)之间的距离矩阵,使用argsort()获得排序索引,并使用take()提取排序数组。我知道我可以直接进行sort(),但我需要索引来进行下一步 我正在使用花式索引。我无法将take()直接用于获得的索引矩阵,但在每一行中添加一个相应的数量使其工作,因为take()将源数组展平,使第二行元素具有索引+=len(set2)、第三行索引+=2*len(set2)等等(见下文): 主要问题是:有没有一种直接的方法可以使用take()而不求这些索引的和 要使用的数据:

目的是计算两组点(
set1
set2
)之间的距离矩阵,使用
argsort()
获得排序索引,并使用
take()
提取排序数组。我知道我可以直接进行
sort()
,但我需要索引来进行下一步

我正在使用花式索引。我无法将
take()
直接用于获得的索引矩阵,但在每一行中添加一个相应的数量使其工作,因为
take()
将源数组展平,使第二行元素具有索引+=len(set2)、第三行索引+=2*len(set2)等等(见下文):

主要问题是:有没有一种直接的方法可以使用
take()
而不求这些索引的和

要使用的数据:

set1 = np.array([[ 250., 0.,    0.],
                 [ 250., 0.,  510.],
                 [-250., 0.,    0.],
                 [-250., 0.,    0.]])

set2 = np.array([[  61.0, 243.1, 8.3],
                 [ -43.6, 246.8, 8.4],
                 [ 102.5, 228.8, 8.4],
                 [  69.5, 240.9, 8.4],
                 [ 133.4, 212.2, 8.4],
                 [ -52.3, 245.1, 8.4],
                 [-125.8, 216.8, 8.5],
                 [-154.9, 197.1, 8.6],
                 [  61.0, 243.1, 8.7],
                 [ -26.2, 249.3, 8.7]])
其他相关问题:


我认为没有一种方法可以使用
np。在不使用平面索引的情况下使用
。由于维度可能会发生变化,因此最好使用
np.ravel\u multi\u index
这样做:

a = np.argsort(dist, axis=1)
a = np.ravel_multi_index((np.arange(dist.shape[0])[:, None], a), dims=dist.shape)
或者,您可以使用奇特的索引,而不使用
take

s2 = dist[np.arange(4)[:, None], a]

截至2018年5月,存在
np。沿轴取

s2 = np.take_along_axis(dist, a, axis=1)
s2 = np.take_along_axis(dist, a, axis=1)