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数组赋值?