2010-12-29 4 views
3

David Morrisseyの答えは 'How to clone a list in python?'です。パフォーマンステストを実行していて、numpy配列で作業するときに予期しない動作が発生しました。私はnumpyの配列が/バグまたは機能:スライス付きの数値配列のクローン化

clone = numpy.array(original) 

または

clone = numpy.copy(original) 

/wのクローン化されるべきであることを知っているが、誤ってスライスすることはあまりにもトリックを行うだろうと想定しています。ただし、

In [11]: original = numpy.arange(4) 

In [12]: original 
Out[12]: array([0, 1, 2, 3]) 

In [13]: clone = original[:] 

In [14]: clone 
Out[14]: array([0, 1, 2, 3]) 

In [15]: clone[0] = 1 

In [16]: clone 
Out[16]: array([1, 1, 2, 3]) 

In [17]: original 
Out[17]: array([1, 1, 2, 3]) 

このわずかな不一致の理由はありますか、バグを報告する必要はありますか?

答えて

11

numpyでは、スライスは元の配列の参照または「ビュー」なので、コピーではありません。それはバグではなく、設計によるものです。その理由は、コピーはビューと同じくらい有用ではないということです。

関連する問題