如何在不计算函数的情况下得到函数返回值的维数

2024-04-24 19:59:42 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我知道函数f返回一个未知维度的向量。函数返回如下形式的值:np.array(list)我能在不评估函数的情况下得到返回值的维度吗?你知道吗

例如,考虑以下函数:

def f(x):
    f1 = x**2
    f2 = x
    return np.array([f1,f2]);

我想要一些类似于:dim(f)的答案2。你知道吗

现在我通过计算一个随机数的函数来绕过这个问题,然后找到维数:len(f(np.random.rand())) 但我想避免对函数的求值。你知道吗

np偏离了轨道numpy


Tags: 函数答案returndefnp情况array向量
2条回答

Koen Dercksen所说的是正确的,不评估函数就无法确定结果的维数。但是,如果确实要计算函数,则应该使用^{} property而不是len()

例如:

def f(x):
    f1 = x**2
    f2 = x
    return np.array([f1,f2]);

len = f(0).shape[0]

另外,为函数调用生成一个新的随机数是不必要的,您可以传递一个常数作为参数,结果将是相同的。你知道吗

这是不可能的。函数的输出维度依赖于它的输入维度,它不是静态的。您可以自己解释,在您的示例中,函数的输出维度为[2, *x.ndim]。当然,如果x是一个标量,那么维数将是2,但是如果x是一个数组,那么维数将是不同的,等等。你知道吗

简言之,如果您知道您的函数总是采用标量或其他具有静态维度的值,只需将其输出维度放入doc字符串中即可。如果您使用的参数可以是任何维度,那么您将无法绕过对函数的求值来找出其结果的维度。你知道吗

相关问题 更多 >