Python 正在从numpy argmin中删除轴参数,但仍为矢量化

Python 正在从numpy argmin中删除轴参数,但仍为矢量化,python,numpy,vectorization,Python,Numpy,Vectorization,我有以下几行代码 np.argmin(距离,轴=0) 这里的距离是k个质心和n个点之间的距离矩阵。这是一个k×n矩阵。 通过这行代码,我试图找到每个点最近的质心,沿着轴0取argmin 我的目标是在没有axis参数的情况下获得类似的矢量化代码,因为我使用的numpy fork中没有实现它 任何帮助都很好:)这是一个矢量化的- def partial_argsort(a): idar = np.zeros(a.max()+1,dtype=int) idar[a] = np.ara

我有以下几行代码

np.argmin(距离,轴=0)
这里的距离是k个质心和n个点之间的距离矩阵。这是一个k×n矩阵。 通过这行代码,我试图找到每个点最近的质心,沿着轴0取argmin

我的目标是在没有axis参数的情况下获得类似的矢量化代码,因为我使用的numpy fork中没有实现它


任何帮助都很好:)

这是一个矢量化的-

def partial_argsort(a):
    idar = np.zeros(a.max()+1,dtype=int)
    idar[a] = np.arange(len(a))
    return idar[np.sort(a)]

def argmin_0(a):
    # Define a scaling array to scale each col such that each col is 
    # offsetted against its previous one  
    s = (a.max()+1)*np.arange(a.shape[1])

    # Scale each col, flatten with col-major order. Find global partial-argsort. 
    # With the offsetting, those argsort indices would be limited to per-col
    # Subtract each group of ncols elements based on the offsetting.
    m,n = a.shape
    a1D = (a+s).T.ravel()
    return partial_argsort(a1D)[::m]-m*np.arange(n)
样本运行以进行验证-

In [442]: np.random.seed(0)
     ...: a = np.random.randint(11,9999,(1000,1000))
     ...: idx0 = argmin_0(a)
     ...: idx1 = a.argmin(0)
     ...: r = np.arange(len(idx0))
     ...: print (a[idx0,r] == a[idx1,r]).all()
True

叉子有
np.sort(…轴)
?@Divakar恐怕没有。axis似乎总是一个问题发布的解决方案对你有用吗?谢谢@Divakar,你总是很有帮助:)这似乎只有一个问题。我无法使用argsort()函数,因为该函数尚未实现。。我知道。。@讨厌的树荫害怕你在哪种原始的裸体分支上?:)我在博里姆。因此,自动gpu加速numpy代码。@Shadesfear是否支持数组赋值和np.flatnonzero?@Shadesfear数组赋值?