問題タブ [recarray]

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 に答える
94 参照

python - 構造化配列と再配列の出力方法を変更する

Numpy は大きなarraysをまとめたもので、インタラクティブなセッションで作業するときに便利です。残念ながら、構造化されており、デフォルトarraysrecarraysはうまく要約されていません。これを変更する方法はありますか?

デフォルトでは、arrayアイテムが 1000 個以下の場合、すべてが表示されます。これ以上の項目がある場合arrayはまとめて表示されます。で設定できますnp.set_printoptions(threshold=<number of items to trigger summarization>, edgeitems=<number of items to show in summary>)。これは、次のような標準のデータ型では問題なく機能します。

結果は

ただし、より複雑なデータ型が使用される場合、要約はあまり役に立ちません。

配列は要約されていますが、サブデータ型は要約されていません。arraysこれは、複雑なデータ型を大量に使用する場合に問題になります。たとえばarray np.zeros(1000, dtype=[('a', float, 3000), ('b', float, 10000)])、ipython インスタンスがハングアップします。

np.arrayタイプを直接使用するのではなく、サブクラス化して custom を作成することで、いくつかの回避策があります__repr__。これは大規模なプロジェクトでは機能しますが、根本的な問題は解決されず、インタラクティブな Python セッションでデータをすばやく探索するには不便です。また、非常に長いコンソール出力を切り捨てるカスタム フィルターをエディターに実装しました。これはちょっとしたハックで、別の場所で Python セッションを開始するときには役に立ちません。

私が知らないnumpy設定、またはこれを修正できるpythonまたはipython設定はありますか?

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

python - レコード配列の「ベース」を見つける方法

baseレコード配列のはどのように決定されますか? ドキュメントは通常の配列と同じ動作を説明しているようですが、それはそうではありません。これは単純な配列と、そこから作成されたレコード配列です。

レコード配列のベースが正しく設定されている

base、通常の配列のフィールド アクセスに対して正しく設定されます。

ただし、レコード配列の場合、ベースが何であるかを判断できません。None私が試したのは、通常の配列、レコード配列、またはその他のものではありません。

スライスのインデックス作成で期待どおりに動作します

そして、それは間違いなくまだ同じメモリを指しています

では、レコード配列の実際のベースを見つけるにはどうすればよいでしょうか。

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

select - FITS_rec とデータの選択: 「真の」フィルタリングの代わりにマスキング?

おそらくアシュリーの投稿と重複しています(ただし、まだコメントできません;))。

最初のFITS_rec ( numpyrecarrayに基づく)のサブセレクション/サンプルに列を追加しようとすると、同じ問題が発生します。すべての行が再表示されます(そして、この新しい列の入力は尊重されていないようです...)。Vlas Sokolov によって提案された" hdu_sliced._get_raw_data() " は、私にとって非常にうまく機能しているソリューションですが、私は疑問に思っていました:

1) イグアナノートが提案する「より良い方法」とは? 私は確かに誰かが私のためにそれをグーグルする必要があります。初心者の私は行き詰まりを感じています:$ ( FITS_recにとどまる必要があります)。

2) それは予想される動作ですか? つまり、元の配列のコピーである「マスクされた配列」で作業したいのでしょうか? 私が最も心配しているのは、新しい計算列の値の「崩壊」です。下記参照:

FITS_rec([('NGC1001', 11.1), ('NGC1002', 12.3), ('NGC1003', 15.2)], dtype=(numpy.record, [('target', 'S20'), ('V_mag' 、 '

FITS_rec([('NGC1002', 12.3), ('NGC1003', 15.2)], dtype=(numpy.record, [('target', 'S20'), ('V_mag', '

ここまでは順調ですね...

FITS_rec([('NGC1001', 11.1, 13.30000019), ('NGC1002', 12.3, 16.20000076), ('NGC1003', 15.2, 0.)], dtype=(numpy.record, [('ターゲット', 'S20 '), ('V_mag', '

...AND ... NGC1002 と NGC1003 の新しい列の値は正しいですが、それぞれ NGC1001 と NGC1002 の行にあります... :|

どんな啓発も歓迎されます:)

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

python - ndarray は recarray アクセスより高速ですか?

再配列データを ndarray にコピーし、いくつかの計算を行い、更新された値で ndarray を返すことができました。

次に、 のappend_fields()機能を発見numpy.lib.recfunctionsし、元の再配列に 2 つのフィールドを単純に追加して、計算された値を保持する方がはるかにスマートであると考えました。

これを行ったとき、操作がはるかに遅いことがわかりました。時間を計る必要はありませんでした。ndarray ベースのプロセスは、rearray では 1 分以上かかるのに比べて数秒かかり、テスト配列は小さく、<10,000 行です。

これは典型的なものですか?ndarray アクセスは recarray よりもはるかに高速ですか? フィールド名によるアクセスによるパフォーマンスの低下を予想していましたが、それほどではありませんでした。

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

python - バイトまたは文字列からの Numpy 再配列

numpy 再配列をバイトに変換する必要があるプロセスがあり、その後、バイトから再配列を再構築します。

ただし、バイトから配列を回復する方法がわかりません。

どうすればそれができるか知っている人はいますか?

コード例:

注: 実際には numpy 再キャリーを使用する必要はありません。pandas データフレームをバイト オブジェクトに変換し、それを回復できるようにする構造だけです。