假设我知道函数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:
Koen Dercksen所说的是正确的,不评估函数就无法确定结果的维数。但是,如果确实要计算函数,则应该使用^{} property 而不是
len()
例如:
另外,为函数调用生成一个新的随机数是不必要的,您可以传递一个常数作为参数,结果将是相同的。你知道吗
这是不可能的。函数的输出维度依赖于它的输入维度,它不是静态的。您可以自己解释,在您的示例中,函数的输出维度为
[2, *x.ndim]
。当然,如果x
是一个标量,那么维数将是2,但是如果x
是一个数组,那么维数将是不同的,等等。你知道吗简言之,如果您知道您的函数总是采用标量或其他具有静态维度的值,只需将其输出维度放入doc字符串中即可。如果您使用的参数可以是任何维度,那么您将无法绕过对函数的求值来找出其结果的维度。你知道吗
相关问题 更多 >
编程相关推荐