如何使用数组输出创建函数?

时间:2017-12-04 23:10:00

标签: python arrays

设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)?

1 个答案:

答案 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