2

viewに変更せずにデータを numpy ビューに保存するにはどうすればよいcopyですか? このコード スニペットは、私の質問の例です。

>>> import numpy as np

>>> #-- init arrays and view
>>> a = np.ones([4])
>>> z = np.zeros([2,4])
>>> z0 = z[0,:]  #-- view
>>> z0.flags.owndata
False

>>> #-- This works!
>>> #-- modify view in-place
>>> np.add(a,z0,z0)
>>> z0.flags.owndata
False
>>> z
array([[ 1.,  1.,  1.,  1.],
       [ 0.,  0.,  0.,  0.]])


>>> #-- reinit arrays and view
>>> z = np.zeros([2,4])
>>> z0 = z[0,:]  #-- view

>>> #-- This does NOT work!
>>> #-- store data into view
>>> z0 = a 
>>> z0.flags.owndata
True

+= -= *= /=パラメータを取るnumpy関数を使用したインプレース変更について知っているので、インプレースの絶対値を取得するoutなどのことができます。np.abs(x, x)x

しかし、データをview変更せずに に保存する方法は?

関数の乱用add(ゼロを追加して格納する) は機能しますが、「正しい」とは感じません。

np.add(a,0,z0)
4

1 に答える 1

2

を実行するとz0 = a、Pythonロジックz0と同じオブジェクトになります。aあなたがしたいことはこれです:

z0[...] = a

スライス構文を使用します。インプレース__setitem__Pythonロジックを使用します。numpy1.7で。または後で使用することもできますnp.copyto。これはおそらく少し高速ですが、個人的にはスライス構文が好きです。

于 2012-11-14T17:30:11.077 に答える