問題タブ [numpy]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1631 参照

python - Numpy 再配列するタプルのリスト

タプルのリストが与えられた場合、各タプルはテーブル内の行を表します。

これをレコード配列に変換する簡単な方法はありますか? 私は試した

うまくいかないようです。

0 投票する
3 に答える
796 参照

python - 奇妙なnumpy.float96の動作

私が欠けているもの:

編集。cygwinでは、上記のコードは問題なく機能します。

完全を期すために、私はこのコードをプレーンpython(Ipythonではない)でチェックしました:

編集

Numpyのtracサイトで3つのバグレポート(976、902、および884)を見ましが、これ文字列表現に関連していないようです。したがって、私は新しいバグ(1263)を開きました。ここで進捗状況を更新します

0 投票する
1 に答える
1458 参照

python - numpy.extractおよびnumpy.any関数、それをより簡単な方法にすることは可能ですか?

このコードをもっと簡単にする可能性があれば、本当にありがたいです!ゼロのある行を削除しようとしています。最初の列は日付です。他のすべての列がゼロの場合、それらを削除する必要があります。列の数は異なります。

numpy.extractドキュメント

0 投票する
5 に答える
6043 参照

python - numpy object_ 配列の最長の文字列

numpy object_ array を使用して可変長文字列を格納しています。

すべての要素をループせずに、配列内の最も長い文字列の長さを見つける簡単な方法はありますか?

0 投票する
9 に答える
3649 参照

python - Python/numpyトリッキーなスライスの問題

私はいくつかの厄介なものに問題があります。コピーではなく、スライスしたデータのビューとしてスライスを返すことで、異常な動作をするためにnumpy配列が必要です。だからここに私がやりたいことの例があります:

次のような単純な配列があるとします。

次のような構文を使用して、配列内の連続するエントリを(左から右に移動して)配列からの前のエントリで更新したいと思います。

これにより、次の結果が得られます。

またはこのようなもの:

さらに説明するために、次のような動作が必要です。

numpyのスピードが欲しい以外は。

numpyのデフォルトの動作はスライスのコピーを取得することなので、実際に取得するのは次のとおりです。

私はすでにこの配列をndarrayのサブクラスとして持っているので、必要に応じてさらに変更を加えることができます。左側のスライスを更新するときに、右側のスライスを継続的に更新する必要があります。

私は夢を見ていますか、それともこの魔法は可能ですか?

更新:これはすべて、ガウス・ザイデル反復を使用して線形代数の問題を多かれ少なかれ解決しようとしているためです。これは調和関数を含む特殊なケースです。これは本当に必要ではなく、さらに混乱する可能性があるため、これに入るのを避けようとしましたが、ここで説明します。

アルゴリズムは次のとおりです。

右?ただし、これは2つの方法で実行できます。Jacobiでは、whileループが循環するまでに既に行った更新を考慮せずに、各要素を隣接する要素で更新します。ループで実行するには、配列をコピーしてから、コピーした配列から1つの配列を更新します。ただし、Gauss-Seidelは、i-1およびj-1エントリごとに更新済みの情報を使用するため、コピーは必要ありません。単一要素の更新ごとに配列が再評価されるため、ループは基本的に「認識」する必要があります。 。つまり、u [i-1、j]やu [i、j-1]のようなエントリを呼び出すたびに、前のループで計算された情報がそこにあります。

この遅くて醜いネストされたループの状況を、numpyslicingを使用した1行のきれいなコードに置き換えたいと思います。

ただし、結果はJacobiの反復になります。これは、スライスを取得するときに:u [:、-2,1:-1]データをコピーするため、スライスは行われた更新を認識しないためです。今でもnumpyはループしますよね?並列ではなく、Pythonでの並列操作のように見えるループへのより高速な方法です。スライスを取得するときに、コピーではなくポインタを返すようにnumpyをハッキングすることで、この動作を利用したいと思います。右?その後、numpyがループするたびに、そのスライスは「更新」されるか、実際には更新で発生したものを複製します。これを行うには、配列の両側にあるスライスをポインターにする必要があります。

とにかく、本当に賢い人がそこにいるなら、それは素晴らしいですが、私はほとんど自分自身を辞任して、唯一の答えはCでループすることだと信じています。

0 投票する
3 に答える
1299 参照

python - recarray を ndarray に変換して ndim を変更する可能性はありますか?

matplotlib.mlab.csv2rec 関数から recarray を取得しています。私の期待は、「x」のような 2 次元を持つことでしたが、「y」のような 1 次元です。y から x を取得する方法はありますか?

0 投票する
6 に答える
64991 参照

python - numpy.arrayの任意の次元を反復処理します

numpy配列の任意の次元でイテレータを取得する関数はありますか?

最初の次元を繰り返すのは簡単です...

ただし、他のディメンションを反復処理するのは困難です。たとえば、最後のディメンションは次のとおりです。

私はこれを自分で行うジェネレーターを作成していますが、これを自動的に行うnumpy.ndarray.iterdim(axis = 0)のような名前の関数がないことに驚いています。

0 投票する
1 に答える
4385 参照

python - numpyrecarrayに行を追加する

新しい再配列を作成せずに、レコード/行をnumpy再配列に追加する簡単な方法はありますか?たとえば、メモリに1Gbを使用する再配列があり、Pythonが一時的に2Gbのメモリを使用することなく、行を追加できるようにしたいとします。

0 投票する
4 に答える
23549 参照

python - Pythonでデータポイントを将来に外挿する簡単な方法はありますか?

データポイントがあるすべての日付に対して、単純なnumpy配列があります。このようなもの:

date(2008,5,1)、date(2008, 5, 20) など、データ ポイントを将来に外挿する簡単な方法はありますか? 数学的アルゴリズムで実行できることを理解しています。しかし、ここで私は簡単に手に入る果物を探しています。実際、私は numpy.linalg.solve の機能が気に入っていますが、外挿には適用できないようです。多分私は絶対に間違っています。

実際には、より具体的には、バーンダウン チャート (xp 用語) を作成しています:「x = 日付、y = 実行する作業量」なので、既に完了したスプリントがあり、将来のスプリントがどのようになるかを視覚化したいと考えています。今の状況が続けば行く。そして最後に、発売日を予測したいと思います。したがって、「実行する作業量」の性質は、バーンダウン チャートで常に低下することです。また、外挿されたリリース日: ボリュームがゼロになる日付も取得したいと考えています。

これはすべて、開発チームに状況を示すためのものです。ここでは正確さはそれほど重要ではありません:) 開発チームのモチベーションが主な要因です。つまり、非常に近似的な外挿法で問題ありません。

0 投票する
3 に答える
2667 参照

python - バイナリ2DマトリックスのPythonコンター

バイナリNxM行列の形状の周りの凸包を計算したいと思います。凸包アルゴリズムは座標のリストを想定しているので、numpy.argwhere(im)を使用してすべての形状点の座標を取得します。ただし、これらのポイントのほとんどは凸包に寄与していません(形状の内側にあります)。凸包の計算時間は、入力として取得するポイントの数に少なくとも比例するため、事前に大量の不要なポイントをフィルタリングし、アウトラインにまたがるポイントのみを渡すというアイデアを考案しました。考え方は非常に単純で、バイナリNxM行列の各行について、最小インデックスと最大インデックスのみを取得します。したがって、たとえば:

次に、アウトラインを読む必要があります(タプルまたは5x2 numpy配列として、私は気にしません):

この形状の周りにきつい凸包(im)は、これらの点のサブセットである必要があります(アウトライン)。言い換えると、「somefunc()」が内側の点をフィルタリングするのに効率的である場合、凸包の計算にかかる時間を節約できます。

私は上記のトリックを実行するコードを持っていますが、何度も実行する必要があるので、誰かがより賢い(より速く読む)アプローチを持っていることを望んでいます。私が持っているコードは次のとおりです。

私が持っていたもう1つのアイデアは、Pythonのreduce()を使用することでした。そのため、座標のリストを1回だけ実行する必要がありました。しかし、私は良い還元機能を見つけるのに苦労しています。

どんな助けでも大歓迎です!

編集

imその間に、私は直接からに行くより速い方法を見つけましたoutline。少なくとも大きな画像では、これは大幅に高速です。外部の解決策が明らかにない場合、私はそれをこの質問の解決策と見なしています。

それでも、誰かがもっと速い方法を知っているなら、声を上げてください:)