タグ付けされた質問 「numpy」

NumPyは、Pythonプログラミング言語の科学および数値計算の拡張機能です。

6
NumPy配列のすべてのセルでの関数の効率的な評価
与えられたnumpyのの配列A、適用する最速/最も効率的な方法何同じ機能を、Fに、すべてのセル? A(i、j)にf(A(i、j))を割り当てると仮定します。 関数fにはバイナリ出力がないため、マスク()演算は役に立ちません。 「すべてのセルを通る」「明白な」二重ループ反復は最適なソリューションですか?

6
numpy配列をディスクに保存する最良の方法
私は大きな派手な配列を保持するための高速な方法を探しています。それらをバイナリ形式でディスクに保存してから、比較的高速にメモリに読み戻します。残念ながらcPickleは十分な速度ではありません。 numpy.savezとnumpy.loadが見つかりました。しかし、奇妙なことに、numpy.loadはnpyファイルを「メモリマップ」にロードします。つまり、配列の定期的な操作は非常に遅くなります。たとえば、次のようなものは非常に遅くなります。 #!/usr/bin/python import numpy as np; import time; from tempfile import TemporaryFile n = 10000000; a = np.arange(n) b = np.arange(n) * 10 c = np.arange(n) * -0.5 file = TemporaryFile() np.savez(file,a = a, b = b, c = c); file.seek(0) t = time.time() z = np.load(file) print "loading …

4
マルチプロセッシングの共有メモリオブジェクト
私はメモリに大きなnumpy配列があるfuncとします。この巨大な配列を(他のいくつかのパラメーターと共に)入力として受け取る関数があります。func異なるパラメータを使用して、並行して実行できます。例えば: def func(arr, param): # do stuff to arr, param # build array arr pool = Pool(processes = 6) results = [pool.apply_async(func, [arr, param]) for param in all_params] output = [res.get() for res in results] マルチプロセッシングライブラリを使用すると、その巨大な配列が複数のプロセスにコピーされます。 異なるプロセスに同じ配列を共有させる方法はありますか?この配列オブジェクトは読み取り専用であり、変更されることはありません。 arrが配列ではなく任意のpythonオブジェクトである場合、もっと複雑なことは何ですか?それを共有する方法はありますか? [編集済み] 私は答えを読みましたが、私はまだ少し混乱しています。fork()はコピーオンライトであるため、Pythonマルチプロセッシングライブラリで新しいプロセスを生成するときに追加のコストを呼び出さないでください。しかし、次のコードは大きなオーバーヘッドがあることを示唆しています: from multiprocessing import Pool, Manager import numpy as np; import …


9
Numpy argsort-何をしていますか?
なぜnumpyはこの結果を出しているのですか? x = numpy.array([1.48,1.41,0.0,0.1]) print x.argsort() >[2 3 1 0] 私がそれを行うと期待するとき: [3 2 0 1] 明らかに、機能についての私の理解が欠けています。
123 python  numpy 

5
matplotlibで密度プロットを作成する方法は?
RIでは、次のようにして目的の出力を作成できます。 data = c(rep(1.5, 7), rep(2.5, 2), rep(3.5, 8), rep(4.5, 3), rep(5.5, 1), rep(6.5, 8)) plot(density(data, bw=0.5)) python(matplotlibを使用)では、最も近いのは単純なヒストグラムです。 import matplotlib.pyplot as plt data = [1.5]*7 + [2.5]*2 + [3.5]*8 + [4.5]*3 + [5.5]*1 + [6.5]*8 plt.hist(data, bins=6) plt.show() normed = Trueパラメータも試してみましたが、ガウス分布をヒストグラムに当てはめる以外の方法はありませんでした。 私の最新の試みは周りだったscipy.statsとgaussian_kde、ウェブ上の例は以下のが、私はこれまで成功してきました。
122 python  r  numpy  matplotlib  scipy 

9
numpyで配列に単一の要素を追加する
私は以下を含む派手な配列を持っています: [1, 2, 3] 以下を含む配列を作成したい: [1, 2, 3, 1] つまり、配列の最後に最初の要素を追加します。 私は明白なことを試しました: np.concatenate((a, a[0])) しかし、私は言ってエラーが出ます ValueError: arrays must have same number of dimensions 私はこれを理解していません-配列はどちらも単なる1d配列です。
122 python  arrays  numpy 

9
numpy配列を効率的に降順に並べ替えますか?
この特定の質問が以前に尋ねられたことがないことに驚いていますが、SOやのドキュメントでは実際には見つかりませんでしたnp.sort。 たとえば、整数を保持するランダムなnumpy配列があるとします。例: > temp = np.random.randint(1,10, 10) > temp array([2, 4, 7, 4, 2, 2, 7, 6, 4, 4]) 並べ替えると、デフォルトで昇順になります。 > np.sort(temp) array([2, 2, 2, 4, 4, 4, 4, 6, 7, 7]) しかし、私はソリューションを降順に並べ替えたいです。 今、私はいつでもできることを知っています: reverse_order = np.sort(temp)[::-1] しかし、この最後のステートメントは効率的ですか?昇順でコピーを作成し、このコピーを逆にして結果を逆順で取得しませんか?これが事実である場合、効率的な代替手段はありますか?np.sort逆の順序で物事を取得するために、並べ替え操作で比較の符号を変更するパラメーターを受け入れるようには見えません。
121 python  arrays  sorting  numpy 

7
NumPyでのNaNの高速チェック
np.nanNumPy配列内のNaN()の発生を確認する最速の方法を探していXます。それは、潜在的に巨大なnp.isnan(X)shapeのブール配列を構築するので、問題外ですX.shape。 試しましたnp.nan in Xが、うまくいかないようですnp.nan != np.nan。これを行うための高速でメモリ効率の良い方法はありますか? (「どれほど巨大か」と尋ねる人にはわかりません。これはライブラリコードの入力検証です。)
120 python  numpy  nan 

3
numpy.histogram()はどのように機能しますか?
numpyを読んでいるときに、関数に遭遇しましたnumpy.histogram()。 それは何のために、どのように機能しますか?ドキュメントでは、ビンについて言及しています:それらは何ですか? 一部のグーグルによって、ヒストグラムの定義が一般的になりました。わかった。しかし、残念ながら、この知識をドキュメントに記載されている例に関連付けることはできません。
120 python  numpy  histogram 


5
Numpy:各行をベクトル要素で除算します
私が派手な配列を持っているとしましょう: data = np.array([[1,1,1],[2,2,2],[3,3,3]]) 対応する「ベクター」があります。 vector = np.array([1,2,3]) data各行に沿って操作して減算または除算を行うと、結果は次のようになります。 sub_result = [[0,0,0], [0,0,0], [0,0,0]] div_result = [[1,1,1], [1,1,1], [1,1,1]] 簡単に言うと、2D配列の各行に対して、各行に対応するスカラーの1D配列で演算を実行するにはどうすればよいですか?
119 python  arrays  numpy  scipy 

6
numpy dot()とPython 3.5+行列乗算の違い@
私は最近Python 3.5に移動し、新しい行列乗算演算子(@)がnumpyドット演算子とは異なる動作をする場合があることに気付きました。たとえば、3D配列の場合: import numpy as np a = np.random.rand(8,13,13) b = np.random.rand(8,13,13) c = a @ b # Python 3.5+ d = np.dot(a, b) @オペレータは、形状の配列を返します。 c.shape (8, 13, 13) しばらくnp.dot()関数が返します: d.shape (8, 13, 8, 13) どうすれば同じ結果をnumpy dotで再現できますか?他に大きな違いはありますか?


8
numpyで1D配列を2D配列に変換します
2D配列の列数を指定して、1次元配列を2次元配列に変換したい。このように機能するもの: > import numpy as np > A = np.array([1,2,3,4,5,6]) > B = vec2matrix(A,ncol=2) > B array([[1, 2], [3, 4], [5, 6]]) numpyには、作成した関数「vec2matrix」のように機能する関数がありますか?(2D配列のように1D配列にインデックスを付けることができることを理解していますが、それは私が持っているコードのオプションではありません-この変換を行う必要があります。)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.