2016-06-30 4 views
0

私は numpy配列を返すと常にビューが生成されますか?

def f(x): 
    return(x) 

は常にnumpyの配列のビューを返します、この機能、たとえば、ことに気づきました。これは一般的に真実ですか?私が考慮する必要がある奇妙なコーナーケースはありますか?配列が の戻り値ステートメントへの引数である場合、私はいつもそのビューを取得しているという事実に頼ることができますか?

+1

'return(x)'の括弧の必要はありません - 'return'は[statement](https://docs.python.org/2/reference/simple_stmts.html)です。機能よりも。 –

答えて

2

いいえ、必ずしも表示されるわけではありません。実際には、定義した関数(f)では、関数にビューを渡すだけでビューが得られます。そうでなければ、あなたは...

>>> def f(x): 
... return x 
... 
>>> import numpy as np 
>>> a = np.arange(10) 
>>> b = f(a) 
>>> b is a 
True 
b以来

aが同じ配列されている(私はビューのような行為多くの点で想定され、)元の配列を取得します、bに変更がありますaにも反映されています(逆も同様です)が、同じ配列なのでビューではありません。

+0

Aaaaaaaaaaaaah! –

+0

@ali_m - OPのアイデンティティ機能について具体的に話していました。私はそれをより明確にしようと編集します。 – mgilson

関連する問題