私はPython関数func(A)
を持っています。 A
はnumpy.array
であり、何度も繰り返しコピーすることを躊躇するほど大きくなる可能性があります。このfunc(A)
はAの内容を変更したいと思っています。これはPython初心者の問題です。私はCでプログラミングしていましたが、それはポインタで行うことができました。 A
の内容を変更して、func(A)
の範囲外でも変更が有効になるようにするにはどうすればよいですか?python:関数パラメータ更新の問題
答えて
tl; drはあなたの場合には、基本的には既にあります。メソッドのラベルAに新しい値を代入しない限り、Aは渡されたオブジェクトへの参照になります。つまり、Aを変更すると、元のオブジェクトが変更されます。
例:
>>> def foo(A):
... print A[0]
... A[0] = 2
... print A[0]
...
>>> a = [0, 1, 2]
>>> foo(a)
0
2
>>> a
[2, 1, 2]
>>> def bar(A):
... print A[0]
... A = [0, 1, 2]
... A[0] = 2
... print A[0]
...
>>> a = [0, 1, 2]
>>> bar(a)
0
2
>>> a
[0, 1, 2]
+1。言い換えれば、 'numpy'配列は変更可能です。しかし、いくつかの 'numpy'関数はコピーを返します。配列をコピーするのではなく、突然変異することが保証されているいくつかの基本的な事柄を綴る価値があるかもしれません。 (item assignment、in-place数学演算など) – senderle
+1 C++開発者としては自分自身で、変数とは対照的にラベルを使ってPythonについて心がけています。どこかにインターネット上の写真を載せた素敵なページがありました...今どこに行きましたか? – JoeFish
私はそれを得ていませんでした。代入なしで配列を更新するにはどうすればよいですか?実際の演算は 'A = A + k * C'です.kはスカラー、Cはローカルなnumpy.arrayです。 –
Aに渡すパラメータがグローバルパラメータである場合は、パラメータAの値を変更できます。もう1つの方法は、変数を関数から関数に渡すことです。 から私がPythonで理解しているものは、そうしたときにオブジェクトはコピーされません。
実際、Aはグローバル変数ではなく、クラスのメンバーであり、funcは別のクラスのメンバーです。 –
- 1. 更新パラメータのRailsの問題
- 2. Pythonの関数の問題
- 3. コールバック関数のパラメータの問題
- 4. 更新の問題編集ビューPython Django
- 5. Pythonラムダ関数の引数の問題
- 6. クラス関数の引数の問題Python
- 7. キャプチャコードの更新に関する問題
- 8. データベーステーブルの更新に関する問題
- 9. ハッシュマップの更新に関する問題
- 10. ストアドプロシージャの更新に関する問題
- 11. UIScrollViewの更新に関する問題
- 12. cakephpの更新に関する問題
- 13. リストボックスの更新に関する問題
- 14. オンラインユーザーリストの更新に関する問題
- 15. Xamarinの更新に関する問題
- 16. 更新問題
- 17. グローバル/ローカル変数の更新に関する問題
- 18. Pythonの温度関数の問題
- 19. 複数のテーブル更新の問題
- 20. Python関数評価の問題
- 21. 他の関数の関数のパラメータを更新する
- 22. 関数のパラメータ - Python
- 23. Pythonの関数のパラメータ数
- 24. トリッキー更新問題
- 25. クエリ更新問題
- 26. postgresSQL関数で複数の更新コマンドを実行する際の問題
- 27. リンクサーバーの更新の問題
- 28. ページの更新の問題
- 29. uiprogressview更新の問題
- 30. UITableViewデータソース更新の問題
この[この] [1]と同様のポストへの応答は、あなたの質問に答えていませんか? [1]:http://stackoverflow.com/questions/10149416/numpy-modify-array-in-place –
私はパラメータはグローバル変数ではないかもしれないことを述べることがあると思います。それはクラスのメンバーかもしれません。私はそれを試しますが、本当の問題は本当に変数を関数に渡すときに何が起こっているのか分かりません。コンテンツをコピーすることは決してありませんか、またはPythonで「参照渡し」や「値渡し」などはありません。 C言語では、ポインタは最初は分かりにくいですが、私は理解していましたが、今、これは... –
これはグローバルとは関係ありません。あなたは、すべての引数をPythonで参照渡しとして考えることができます。 –