2017-08-10 14 views
1

私には特定の形状の数値配列を与える関数がありますが、この配列がどのような形になるかはまだわかりません。関数の出力の形

ここでは、この関数を入力とする別の関数があります。私は今、最初の関数のnumpy配列の形状に関する情報を抽出して、2番目の関数で使用することができますか?

例:

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

理由だけf2fを呼び出し、そこ配列を使用し、それは非常に複雑にする:

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

ありがとうございます!おそらく私は複雑に思っていました。ラムダ関数に割り当てることができる属性を少しだけexannできますか?私はあなたの2番目のコードの違いを見つけることができません。 – philmcole

+0

@philmcole文字通り、形状が関数f1の属性であることを望む場合にのみ、2番目のアプローチを追加しました。重要な行は 'f1.shape =(2,3)'を手動で設定するところです。しかし、私はそのアプローチをお勧めしません!最初のアプローチがあなたのために実行可能な場合は、それが望ましい方法でなければなりません。 – MSeifert