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

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

5
numpy配列を列としてPandasデータフレームに追加します
次のような形状(X、Y)のPandasデータフレームオブジェクトがあります。 [[1, 2, 3], [4, 5, 6], [7, 8, 9]] 形状(X、Z)のでこぼこしたスパース行列(CSC)は、次のようになります。 [[0, 1, 0], [0, 0, 1], [1, 0, 0]] データフレームが次のようになるように、マトリックスのコンテンツを新しい名前付き列のデータフレームに追加するにはどうすればよいですか。 [[1, 2, 3, [0, 1, 0]], [4, 5, 6, [0, 0, 1]], [7, 8, 9, [1, 0, 0]]] データフレームの形状が(X、Y + 1)になり、マトリックスの行がデータフレームの要素になっていることに注意してください。
85 python  numpy  pandas 

11
2つのnumpy配列を織り交ぜる
次の配列が与えられていると仮定します。 a = array([1,3,5]) b = array([2,4,6]) これらを効率的に織り交ぜて、このような3番目の配列を取得するにはどうすればよいでしょうか。 c = array([1,2,3,4,5,6]) と仮定することができますlength(a)==length(b)。
84 python  arrays  numpy 

7
2つのパンダ列の文字列連結
私は以下を持っていますDataFrame: from pandas import * df = DataFrame({'foo':['a','b','c'], 'bar':[1, 2, 3]}) 次のようになります。 bar foo 0 1 a 1 2 b 2 3 c 今、私は次のようなものが欲しいです: bar 0 1 is a 1 2 is b 2 3 is c どうすればこれを達成できますか?私は以下を試しました: df['foo'] = '%s is %s' % (df['bar'], df['foo']) しかし、それは私に間違った結果を与えます: >>>print df.ix[0] bar …

7
numpyを使用してPythonでTIFF(インポート、エクスポート)を操作する
TIFF画像を開いてnumpy配列にインポートするには、Pythonメソッドが必要です。これにより、ピクセルデータを分析および変更して、TIFFとして再度保存できます。(これらは基本的にグレースケールの光強度マップであり、ピクセルごとのそれぞれの値を表します) TIFFに関するPILメソッドに関するドキュメントが見つかりませんでした。私はそれを理解しようとしましたが、「悪いモード」または「ファイルタイプがサポートされていません」というエラーしか発生しませんでした。 ここで何を使用する必要がありますか?

4
2Dリストを2Dnumpy配列に変換する方法は?
私は次のような2Dリストを持っています a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] それを2次元のnumpy配列に変換したいと思います。次のようなメモリを割り当てずに実行できますか numpy.zeros((3,3)) そしてそれに値を保存しますか?
83 python  numpy 

8
numpy配列のシフト要素
数年前のこの質問のフォローアップとして、numpyに正規の「シフト」機能はありますか?ドキュメントから何も表示されません。 これが私が探しているものの簡単なバージョンです: def shift(xs, n): if n >= 0: return np.r_[np.full(n, np.nan), xs[:-n]] else: return np.r_[xs[-n:], np.full(-n, np.nan)] これを使用すると、次のようになります。 In [76]: xs Out[76]: array([ 0., 1., 2., 3., 4., 5., 6., 7., 8., 9.]) In [77]: shift(xs, 3) Out[77]: array([ nan, nan, nan, 0., 1., 2., 3., 4., 5., 6.]) …
83 python  numpy 

3
numpy.exp()は正確に何をしますか?[閉まっている]
閉まっている。この質問は、StackOverflowのガイドラインを満たしていません。現在、回答を受け付けていません。 この質問を改善したいですか?質問を更新して、StackOverflowのトピックになります。 5年前に閉鎖されました。 この質問を改善する np.exp()が実際に何をするのか非常に混乱しています。ドキュメントには、「入力配列内のすべての要素の指数を計算する」と記載されています。これが正確に何を意味するのか私は混乱しています。誰かが実際に何をしているのかについてもっと情報を教えてもらえますか?
83 python  numpy  statistics  exp 


3
x座標とy座標のnumpy配列で最も近い点のインデックスを見つける
2つの2dnumpy配列があります。x_arrayにはx方向の位置情報が含まれ、y_arrayにはy方向の位置が含まれます。 次に、x、yポイントの長いリストがあります。 リスト内の各ポイントについて、そのポイントに最も近い場所(配列で指定)の配列インデックスを見つける必要があります。 私はこの質問に基づいて、機能するいくつかのコードを素朴に作成しました: numpy配列で最も近い値を見つける すなわち import time import numpy def find_index_of_nearest_xy(y_array, x_array, y_point, x_point): distance = (y_array-y_point)**2 + (x_array-x_point)**2 idy,idx = numpy.where(distance==distance.min()) return idy[0],idx[0] def do_all(y_array, x_array, points): store = [] for i in xrange(points.shape[1]): store.append(find_index_of_nearest_xy(y_array,x_array,points[0,i],points[1,i])) return store # Create some dummy data y_array = numpy.random.random(10000).reshape(100,100) x_array = numpy.random.random(10000).reshape(100,100) …


2
numpyはFortranルーチンよりもはるかに高速なのはなぜですか?
シミュレーション(Fortranで記述)から温度分布を表す512 ^ 3配列を取得します。配列は、サイズが約1 / 2Gのバイナリファイルに保存されます。この配列の最小値、最大値、平均値を知る必要があります。とにかくFortranコードを理解する必要があるので、試してみることにし、次の非常に簡単なルーチンを思いつきました。 integer gridsize,unit,j real mini,maxi double precision mean gridsize=512 unit=40 open(unit=unit,file='T.out',status='old',access='stream',& form='unformatted',action='read') read(unit=unit) tmp mini=tmp maxi=tmp mean=tmp do j=2,gridsize**3 read(unit=unit) tmp if(tmp>maxi)then maxi=tmp elseif(tmp<mini)then mini=tmp end if mean=mean+tmp end do mean=mean/gridsize**3 close(unit=unit) 私が使用しているマシンでは、ファイルごとに約25秒かかります。それはかなり長いと私を驚かせたので、私は先に進んでPythonで次のことをしました: import numpy mmap=numpy.memmap('T.out',dtype='float32',mode='r',offset=4,\ shape=(512,512,512),order='F') mini=numpy.amin(mmap) maxi=numpy.amax(mmap) mean=numpy.mean(mmap) さて、もちろんこれはもっと速いと思っていましたが、本当に感動しました。同じ条件下で1秒もかかりません。平均は、私のFortranルーチンが見つけたもの(私も128ビットのfloatで実行したので、どういうわけかそれをもっと信頼しています)から外れていますが、有効数字の7桁程度にすぎません。 どうしてnumpyはこんなに速くなるのでしょうか?つまり、これらの値を見つけるには、配列のすべてのエントリを調べる必要がありますよね?私はFortranルーチンで非常に愚かなことをしているので、もっと時間がかかりますか? 編集: コメントの質問に答えるには: はい、32ビットと64ビットのfloatを使用してFortranルーチンを実行しましたが、パフォーマンスに影響はありませんでした。 iso_fortran_env128ビットのフロートを提供するものを使用しました。 …

11
scipy.interpolateが入力範囲を超えて外挿された結果を出すようにするにはどうすればよいですか?
手巻き補間器(数学者の大学によって開発された)を使用するプログラムを移植して、scipyが提供する補間器を使用しようとしています。scipy補間器を使用またはラップして、古い補間器に可能な限り近い動作をさせたいと思います。 2つの関数の主な違いは、元の補間器では、入力値が入力範囲より上または下の場合、元の補間器が結果を外挿することです。scipy補間器でこれを試すと、が発生しValueErrorます。このプログラムを例として考えてみましょう。 import numpy as np from scipy import interpolate x = np.arange(0,10) y = np.exp(-x/3.0) f = interpolate.interp1d(x, y) print f(9) print f(11) # Causes ValueError, because it's greater than max(x) クラッシュする代わりに、最後の行が単純に線形外挿を行い、最初と最後の2つのポイントで定義された勾配を無限に続けるようにするための賢明な方法はありますか? 実際のソフトウェアでは、実際にはexp関数を使用していないことに注意してください。これは説明のためだけのものです。
82 python  math  numpy  scipy 

6
Python NumPyでは、寸法と軸は何ですか?
PythonsNumPyモジュールでコーディングしています。3D空間内の点の座標がと記述されている[1, 2, 1]場合、それは3次元、3軸、ランク3ではないでしょうか。または、それが1つの次元である場合、それは点ではなく点(複数)であるべきではありませんか? ドキュメントは次のとおりです。 Numpyでは、寸法は軸と呼ばれます。軸数はランクです。たとえば、3D空間[1、2、1]の点の座標は、軸が1つあるため、ランク1の配列です。その軸の長さは3です。 出典:http://wiki.scipy.org/Tentative_NumPy_Tutorial
82 python  numpy 

2
PythonScipyでの2サンプルのコルモゴロフ-スミルノフ検定
Scipyで2サンプルのKSテストを行う方法がわかりません。 ドキュメントを読んだ後scipykstest 分布が標準正規分布と同一である場所をテストする方法がわかります from scipy.stats import kstest import numpy as np x = np.random.normal(0,1,1000) test_stat = kstest(x, 'norm') #>>> test_stat #(0.021080234718821145, 0.76584491300591395) つまり、p値が0.76の場合、2つの分布が同一であるという帰無仮説を棄却することはできません。 ただし、2つの分布を比較して、次のように、それらが同一であるという帰無仮説を棄却できるかどうかを確認したいと思います。 from scipy.stats import kstest import numpy as np x = np.random.normal(0,1,1000) z = np.random.normal(1.1,0.9, 1000) xとzが同一かどうかをテストします 私は素朴なものを試しました: test_stat = kstest(x, z) 次のエラーが発生しました: TypeError: 'numpy.ndarray' object is …

1
numpyを使用した配列の効率的なしきい値フィルター
特定のしきい値よりも低い要素を削除するには、配列をフィルタリングする必要があります。私の現在のコードは次のようなものです: threshold = 5 a = numpy.array(range(10)) # testing data b = numpy.array(filter(lambda x: x >= threshold, a)) 問題は、ラムダ関数(遅い)を持つフィルターを使用して、一時リストを作成することです。 これは非常に単純な操作であるため、効率的な方法でそれを実行するnumpy関数があるかもしれませんが、私はそれを見つけることができませんでした。 これを実現する別の方法は、配列を並べ替え、しきい値のインデックスを見つけて、そのインデックスからスライスを返すことだと思いましたが、これが小さな入力の場合は高速であるとしても(とにかく目立たないでしょう) )、入力サイズが大きくなるにつれて、その効率は明らかに漸近的に低下します。 何か案は?ありがとう! 更新:私もいくつかの測定を行いましたが、入力が100.000.000エントリの場合、並べ替えとスライスは純粋なPythonフィルターの2倍の速さでした。 In [321]: r = numpy.random.uniform(0, 1, 100000000) In [322]: %timeit test1(r) # filter 1 loops, best of 3: 21.3 s per loop In [323]: %timeit test2(r) …

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