2017-08-10 61 views
1

我有一个函数给了我一个具有某种形状的numpy数组,但是我不知道这个数组的形状是什么。函数输出的形状

现在我有另一个功能,它将此功能作为输入。我怎样才能提取有关第一个函数的numpy数组形状的信息,以便我可以在第二个函数中使用它?

例子:

f1 = lambda x: np.array([[1,2,3],[4,5,6]]) # 2x3 
def f2(f): 
    print(f.shape) # should give me (2,3) here 

In: f2(f1) 

的问题是我想编写这种方式使f1能有可能与其他形状的数组,但代码应该为每个造型工作。

回答

0

为什么做起来很复杂,只需调用ff2和使用数组有:

f1 = lambda x: np.array([[1,2,3],[4,5,6]]) # 2x3 
def f2(f): 
    arr = f(1) # add your inputs here instead of the "1" 
    print(arr.shape) 

>>> f2(f1) 
(2, 3) 

你也可以的情况下,分配属性您lambda功能你不想把它称为:

f1 = lambda x: np.array([[1,2,3],[4,5,6]]) # 2x3 
def f2(f): 
    print(f.shape) 

>>> f1.shape = (2, 3) 
>>> f2(f1) 
(2, 3) 
+0

谢谢!可能我想的很复杂。你可以对我可以分配给lambda函数的属性稍微介绍一下吗?我无法发现第二个代码中的差异。 – philmcole

+0

@philmcole我只是添加了第二种方法,以防字面意思是形状是函数f1的一个属性。重要的一行是我手动设置'f1.shape =(2,3)'的地方。不过,我不会推荐这种方法!如果第一种方法对你是可行的,那应该是首选方法。 – MSeifert