设X为形状数组(100,200,3)
当给出三维向量y时,我想定义一个函数f,使得f(y)是一个形状(100,200)的数组,使得f(y)[i] [j]是l2距离在X [i] [j]和y之间。
以下是我尝试的方式:
import numpy as np
def norm(n):
return np.linalg.norm(n)
def sdistance(y,i,j):
return norm(np.asarray(y)-X[i][j]
def distance(y):
return ???
我想定义最后的函数距离(y),使得距离(y)是形状(100,200)的数组,使得距离(y)[i] [j] = sdistance(y,i,j)。
如何正确定义函数距离(y)?
答案 0 :(得分:0)
如果我们将您的描述逐字翻译成代码,它将如下所示:
import numpy as np
X = np.random.random((100,200,3))
def norm(n):
return np.linalg.norm(n)
def sdistance(y,i,j):
return norm(np.asarray(y)-X[i,j])
def distance(y):
return np.linalg.norm(X - y,axis=2)
最后一个函数应该等同于以下更符合你的描述。
def distance(y):
output = np.zeros(X.shape[0:2])
for i in range(X.shape[0]):
for j in range(X.shape[1]):
output[i,j] = sdistance(y,i,j)
return output