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

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

6
corrcoefが行列を返すのはなぜですか?
np.corrcoefが行列を返すのは私には奇妙に思えます。 correlation1 = corrcoef(Strategy1Returns,Strategy2Returns) [[ 1. -0.99598935] [-0.99598935 1. ]] なぜこれが当てはまるのか、そして古典的な意味で1つの値だけを返すことが可能かどうかを誰かが知っていますか?
81 python  math  numpy 


3
Pandasのパフォーマンスは、既存の列から新しい列を作成するためにnp.vectorizeに適用されます
Pandasデータフレームを使用していて、既存の列の関数として新しい列を作成したいと思います。私はとの速度差の良い議論を見ていないdf.apply()とnp.vectorize()私は、私はここに求めるだろうと思ったので、。 パンダのapply()機能は遅いです。私が測定したもの(いくつかの実験で以下に示す)から、少なくとも私の2016 MacBook Proでは、np.vectorize()使用はDataFrame関数を使用するよりも25倍高速(またはそれ以上)ですapply()。これは期待される結果ですか、そしてその理由は何ですか? たとえば、次のN行のあるデータフレームがあるとします。 N = 10 A_list = np.random.randint(1, 100, N) B_list = np.random.randint(1, 100, N) df = pd.DataFrame({'A': A_list, 'B': B_list}) df.head() # A B # 0 78 50 # 1 23 91 # 2 55 62 # 3 82 64 # 4 99 80 さらに、2つの列Aとの関数として新しい列を作成するとしBます。以下の例では、単純な関数を使用しますdivide()。関数を適用するには、df.apply()またはのいずれかを使用できますnp.vectorize(): def …

10
scipy sparsecsr_matrixをポータブルデータ形式で保存/ロードします
scipyスパースcsr_matrixをポータブル形式でどのように保存/ロードしますか?scipyスパース行列は、Python 2(Linux 64ビット)で実行するためにPython 3(Windows 64ビット)で作成されます。最初は、pickle(protocol = 2およびfix_imports = True)を使用しましたが、Python 3.2.2(Windows 64ビット)からPython 2.7.2(Windows 32ビット)に移行すると機能せず、エラーが発生しました。 TypeError: ('data type not understood', <built-in function _reconstruct>, (<type 'numpy.ndarray'>, (0,), '[98]')). 次に、numpy.saveandnumpy.loadと同様にscipy.io.mmwrite()andscipy.io.mmread()を試しましたが、これらの方法はいずれも機能しませんでした。
80 python  numpy  scipy 

2
numpyを使用した奇妙なインデックス付け
(2,2,50,100)という形の変数xがあります。 また、np.array([0,10,20])と等しい配列yもあります。x [0、:、:、y]にインデックスを付けると、奇妙なことが起こります。 x = np.full((2,2,50,100),np.nan) y = np.array([0,10,20]) print(x.shape) (2,2,50,100) print(x[:,:,:,y].shape) (2,2,50,3) print(x[0,:,:,:].shape) (2,50,100) print(x[0,:,:,y].shape) (3,2,50) 最後の1つが(2,50,3)ではなく(3,2,50)を出力するのはなぜですか?
27 python  numpy 

3
マルチスレッドに関するPandasとNumpyの奇妙なバグ
Numpyの関数のほとんどは、デフォルトでマルチスレッドを有効にします。 たとえば、スクリプトを実行すると、8コアのIntel CPUワークステーションで作業します import numpy as np x=np.random.random(1000000) for i in range(100000): np.sqrt(x) Linux topは、実行中に800%のCPU使用率を表示し ます。つまり、numpyはワークステーションに8つのコアがあることを自動的に検出し、8つのコアnp.sqrtすべてを自動的に使用して計算を高速化します。 しかし、私は奇妙なバグを見つけました。スクリプトを実行すると import numpy as np import pandas as pd df=pd.DataFrame(np.random.random((10,10))) df+df x=np.random.random(1000000) for i in range(100000): np.sqrt(x) CPU使用率は100%です!!。 つまり、numpy関数を実行する前に2つのpandas DataFrameを追加すると、numpyの自動マルチスレッド機能は警告なしに消えてしまいます。これは絶対に合理的ではありません、なぜPandas dataFrame計算はNumpyスレッド設定に影響するのですか?バグですか?これを回避する方法は? PS: Linux perfツールを使用してさらに掘り下げます。 最初のスクリプトショーの実行 2番目のスクリプトの実行中に したがって、両方のスクリプトにはが含まれますがlibmkl_vml_avx2.so、最初のスクリプトにはlibiomp5.soopenMPに関連すると思われる追加のスクリプトが含まれます。 そして、vmlはIntelベクトル数学ライブラリを意味するので、vml docによれば、少なくとも以下の関数はすべて自動的にマルチスレッド化されると思います
25 python  pandas  numpy 

2
Pythonの結果はcv2.Rodriguesの計算中に変化します
実行した場合: import numpy as np import cv2 def changes(): rmat=np.eye(4) tvec=np.zeros(3) (rvec, jacobian)=cv2.Rodrigues(rmat) print rvec for i in range(2): changes() 私は得ます: [[6.92798859e-310] [2.19380404e-316] [1.58101007e-322]] [[0.] [0.] [0.]] changes()変更の結果です。 なぜなのか、またtvec=np.zeros(3)コメントアウトすると変更が止まるので 、システムのバグだと思います。

8
numpy 1D配列:n回以上繰り返されるマスク要素
次のような整数の配列が与えられます [1, 1, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5] N何度も繰り返す要素をマスクする必要があります。明確にするために:主な目的は、ブール値のマスク配列を取得し、後でビニング計算に使用することです。 かなり複雑な解決策を思いついた import numpy as np bins = np.array([1, 1, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5]) N = 3 …
18 python  arrays  numpy  binning 

4
2列のリストを行単位で効率的に比較する
次のようなPandas DataFrameがある場合: import pandas as pd import numpy as np df = pd.DataFrame({'today': [['a', 'b', 'c'], ['a', 'b'], ['b']], 'yesterday': [['a', 'b'], ['a'], ['a']]}) today yesterday 0 ['a', 'b', 'c'] ['a', 'b'] 1 ['a', 'b'] ['a'] 2 ['b'] ['a'] ... etc しかし、約10万のエントリがあるため、これらのリストの追加と削除を2つの列で行ごとに見つけようとしています。 それはこの質問に匹敵します:パンダ:リストの列をDataFrameで行ごとにパンダ(forループではない)と比較する方法は? しかし、私は違いを見ています、そしてPandas.apply方法はそれほど多くのエントリのためにそれほど速くないようです。これは私が現在使用しているコードです。方法:Pandas.applynumpy's setdiff1d additions = df.apply(lambda row: np.setdiff1d(row.today, …

1
np.dotが不正確なのはなぜですか?(n次元配列)
np.dot2つの'float32'2D配列を取得するとします。 res = np.dot(a, b) # see CASE 1 print(list(res[0])) # list shows more digits [-0.90448684, -1.1708503, 0.907136, 3.5594249, 1.1374011, -1.3826287] 数字。例外として、次のものを変更できます。 ケース1:スライスa np.random.seed(1) a = np.random.randn(9, 6).astype('float32') b = np.random.randn(6, 6).astype('float32') for i in range(1, len(a)): print(list(np.dot(a[:i], b)[0])) # full shape: (i, 6) [-0.9044868, -1.1708502, 0.90713596, 3.5594249, 1.1374012, -1.3826287] …
15 python  c  arrays  numpy  precision 

6
numpyで対称ペアをすばやく見つける
from itertools import product import pandas as pd df = pd.DataFrame.from_records(product(range(10), range(10))) df = df.sample(90) df.columns = "c1 c2".split() df = df.sort_values(df.columns.tolist()).reset_index(drop=True) # c1 c2 # 0 0 0 # 1 0 1 # 2 0 2 # 3 0 3 # 4 0 4 # .. .. .. # …
15 python  pandas  numpy 

2
numpy.uniqueがセットのリストに誤った出力を与える
私は与えられたセットのリストを持っています、 sets1 = [{1},{2},{1}] 私はnumpyののを使用して、このリストの中にユニークな要素を見つけたときunique、私が取得します np.unique(sets1) Out[18]: array([{1}, {2}, {1}], dtype=object) 見てわかるよう{1}に、出力で繰り返されるため、結果は間違っています。 同様の要素を隣接させることで入力の順序を変更しても、これは起こりません。 sets2 = [{1},{1},{2}] np.unique(sets2) Out[21]: array([{1}, {2}], dtype=object) なぜこれが起こるのですか?それとも私がやった方法に何か問題がありますか?
14 python  list  numpy  set 

5
numpy配列のすべての境界に0があるかどうかを確認します[終了]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 15日前休業。 多次元numpy配列がすべての側面で0を持っているかどうかを確認する最も速い方法は何でしょうか。 だから、簡単な2Dの例として、私は: x = np.random.rand(5, 5) assert np.sum(x[0:, 0]) == 0 assert np.sum(x[0, 0:]) == 0 assert np.sum(x[0:, -1]) == 0 assert np.sum(x[-1, 0:]) == 0 これは2Dの場合には問題ありませんが、より高い次元での記述は少し面倒であり、効率的で保守しやすくするためにここで使用できる巧妙で厄介なトリックがあるかどうか疑問に思っていました。
13 python  numpy 

3
遅いパンダDataFrame MultiIndex reindex
次の形式のパンダDataFrameがあります。 id start_time sequence_no value 0 71 2018-10-17 20:12:43+00:00 114428 3 1 71 2018-10-17 20:12:43+00:00 114429 3 2 71 2018-10-17 20:12:43+00:00 114431 79 3 71 2019-11-06 00:51:14+00:00 216009 100 4 71 2019-11-06 00:51:14+00:00 216011 150 5 71 2019-11-06 00:51:14+00:00 216013 180 6 92 2019-12-01 00:51:14+00:00 114430 19 7 92 2019-12-01 …

5
NumPy配列内の最も近いゼロまでの距離を見つける
NumPy配列があるとしましょう: x = np.array([0, 1, 2, 0, 4, 5, 6, 7, 0, 0]) 各インデックスで、最も近いゼロ値までの距離を求めます。位置がゼロの場合、ゼロを距離として返します。その後は、現在位置の右側にある最も近いゼロまでの距離のみに関心があります。超素朴なアプローチは次のようなものです: out = np.full(x.shape[0], x.shape[0]-1) for i in range(x.shape[0]): j = 0 while i + j < x.shape[0]: if x[i+j] == 0: break j += 1 out[i] = j そして出力は次のようになります: array([0, 2, 1, 0, 4, 3, 2, …
12 python  numpy 

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