....「予期しない」とは、_I_が予期していなかったことを意味します。 これは単にドキュメントの修正である可能性があります。または、 np.ma
どのように機能するかを理解していないことで叱られるかもしれませんが、この動作は適切ではないと思います。
In [100]: x = np.ma.ones(5)
In [101]: x.mask = [False,False,True,False,False]
In [102]: np.copy(x)
Out[102]: array([ 1., 1., 1., 1., 1.])
In [103]: np.ma.copy(x)
Out[103]:
masked_array(data = [1.0 1.0 -- 1.0 1.0],
mask = [False False True False False],
fill_value = 1e+20)
In [104]: np.__version__
Out[104]: '1.8.0.dev-074a40c'
私は少なくとも警告を期待しますが、優先順に表示したいと思います。
np.copy(x)
はマスクされた配列を返します(xはマスクされた配列であるため)np.copy(x)
は、配列のマスクを解除していることを警告し、上記と同じ配列を返しますnp.copy(x)
は例外を発生させますnp.copy(x)
は[1,1,nan,1,1]
返します(これはおそらく理想的ではありません)1.9-develでまだ開いています
ただし、特別なケーシングマスク配列なしでこれを修正する方法はわかりません。
np.copyのロジックを変更して、配列の呼び出しにsubok=True
を含めると、この問題は修正されますか?
から:
return array(a, order=order, copy=True)
に:
return array(a, order=order, subok=True, copy=True)
もしそうなら、subokはnp.copy
パラメータである必要があり、デフォルトはTrueまたはFalseである必要がありますか? Trueは最初の優先結果を返し、Falseは現在の動作を維持しますが、期待される動作を許可しますが、引数を追加します。
すでに2つの完全に実行可能なソリューションがある場合、 subok
パラメーターをnp.copy
に追加することに賛成しません。
.copy()
メソッドを使用しますnp.array(a, subok=True)
使用します(デフォルトでコピーされます)ほとんどの「コピー」は、実際にはコピーであり、したがって同じタイプの何かを取り戻すという印象を与えると思うので、私は実際には反対のことを主張します。 また、numpy全体をより一貫してサブクラスを処理できるようにするための小さいながらも有用な貢献だと思います(以前にnp.broadcast_arrays
で行ったように、適切な代替手段がありませんでした)。 ただし、下位互換性を維持する必要があることを考えると、デフォルトのsubok=False
固執していると思います。
とにかく、 @ jjhelmus 、簡単なPRをして、他の人の考えを見てみませんか?
@shoyer :np.copyは、おそらく必要な関数のリストに含まれているはずです
ある種のアヒル配列のサポートですが、アヒル配列の場合はnp.copyだと思います
そしてnp.arrayはおそらく異なることをするはずです。 多分それはただ呼び出す必要があります
arr.copy?
2015年10月15日木曜日午前7:00、Marten van Kerkwijk <
[email protected]>書き込み:
私は実際には反対のことを主張します、なぜなら私はほとんどの「コピー」が与えると思うからです
実際にはコピーである何かを取り戻すという印象、
したがって、同じタイプです。 小さいけれど役に立つ貢献だと思います
numpy全体をより一貫してサブクラスを処理できるようにする
(以前にnp.broadcast_arraysで行ったように、適切な代替手段はありません
利用可能でした)。 ただし、下位互換性を維持する必要があるため、私は
デフォルトのsubok = Falseで立ち往生していると思いますか。とにかく、 @ jjhelmus https://github.com/jjhelmus 、簡単なPRをしてみませんか
他の人の考えを見てください。—
このメールに直接返信するか、GitHubで表示してください
https://github.com/numpy/numpy/issues/3474#issuecomment-148395201 。
ナサニエルJ.スミス-http://vorpus.org
はい、np.copyにduck配列のcopyメソッドを呼び出させようとすると+1になります。
subok
もサポートしない理由はまだありません。 そしてもちろん、 __copy__
が存在する場合はそれを呼び出すことができます。
デフォルト値Falseで関数にsubokパラメーターを追加するPR#6509を作成しました。 これにより、このトピックに関するいくつかの議論が開かれると思います。 これが通常PR、問題、またはメーリングリストで行われるかどうかはわかりません。
APIディスカッションはメーリングリストにあるはずです。
2015年10月18日19:37、「JonathanJ.Helmus」 [email protected]
書きました:
PR#6509https ://github.com/numpy/numpy/pull/6509を作成しました。
関数の_subok_パラメーター。デフォルト値は_False_です。 私は
これを推測すると、このトピックに関するいくつかの議論が開かれます。 これかどうかわからない
通常、PR、問題、またはメーリングリストで行われます。—
このメールに直接返信するか、GitHubで表示してください
https://github.com/numpy/numpy/issues/3474#issuecomment-149080511 。
明日、トピックのリストにメールを送信します。