同じオブジェクトにリンクせずにリストをコピーする場合は、リストを呼び出す必要があります。だから、私はnumpyの配列に事前にnumpyを使用しているときのリストと同等のものは何ですか?
import numpy
a = numpy.ones(4)
b = XXX(a)?
おかげ
同じオブジェクトにリンクせずにリストをコピーする場合は、リストを呼び出す必要があります。だから、私はnumpyの配列に事前にnumpyを使用しているときのリストと同等のものは何ですか?
import numpy
a = numpy.ones(4)
b = XXX(a)?
おかげ
copy
-methodを使用:
を持っているときあなたはただ、実際に(配列またはリストをコピーする[:]
パターンを使用することができます同等だろう何
a = [1, 2, 3]
b = list(a)
a == b
True
a is b
False
リストではなく、配列ではありません。
a = np.ones(4)
b = a[:]
>>> b
array([ 1., 1., 1., 1.])
>>> id(a)
4606143744
>>> id(b)
4606143984
タイミング
a = np.random.randn(1000000)
%timeit -n 1000 a.copy()
1000 loops, best of 3: 1.1 ms per loop
%timeit -n 1000 a[:]
1000 loops, best of 3: 659 ns per loop
更新
私は通常、このような誤った投稿を削除だろうが、私はそれが有益であると考えているので、私はそれを残しています。
リストの期待どおりに動作します。 @ Divakarで指摘したように
a = [1, 2, 3]
b = a[:]
b[2] = 0
>>> a
[1, 2, 3]
>>> b
[1, 2, 0]
しかし、これはnumpyのアレイのために働くためには表示されません。
a = np.array([1, 2, 3])
b = a[:]
b[2] = 0
>>> a
array([1, 2, 0])
>>> b
array([1, 2, 0])
>>> id(a)
4600986400
>>> id(b)
4606142624
ベストを明示的にcopy()
方法(例えばb = a.copy()
)を使用します。
Python 3では、 'list'オブジェクトにも' copy'メソッドがあります。これは、意図を明確にするために他のすべてのメソッドよりも優れていると思います。 –