問題タブ [structured-array]
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.
python - 構造化配列の要素にアクセスする際のエラー
1現在、センサーからの測定値を保存するために構造化配列を使用しています。配列 ("data" という名前) は次元 2000x3 で、"samples"、"timestamp"、"labels" の 3 つのフィールドがあります。samples は 6 要素のベクトルです。たとえば、1 つの行は次のようになります。
1 つの行のすべてのサンプルが必要な場合は、次のように行にアクセスできます。
これは正常に動作しますが、向きを変えて次のように書くと:
次のエラーが表示されます。
ValueError: 複数の要素を持つ配列の真の値があいまいです。a.any() または a.all() を使用する
なぜこれが起こっているのか誰にも分かりますか?
編集: 理解を深めるために、「データ」配列の最初の 10 行を次に示します。
編集 2: numpy バージョン 1.10.4 を使用しています
そして、私は実際には使用していません
しかし、私はそれを試しましたが、うまくいきません。私はこのように使用しています:
考えられる最も基本的な例を実行しましたが、これは驚くほど機能します。
考えられる最も基本的な例を実行しましたが、これは驚くほど機能します。
python - numpy 構造化配列で空の DataFrame を埋める
DataFrame
次のようにして空を作成しました。
今、次を使用して最初の 4 行のデータを変更しようとしていますnumpy
structured array
。
これを達成する別の方法はありますか?
DataFrame
のビューで を埋めた場合、これは部分的に機能しstructured array
ます。
しかし、ご覧のとおり、整数 1 が浮動小数点に強制されたため、f0
および列は 0 になりました。f2
python - numpy構造化配列で初期化するとpandas DataFrameが非常に遅くなる
numpy
structured array
整数と浮動小数点数を持つ があり、それを使用して を初期化しますpandas
DataFrame
。
上記のコードからわかるように、DataFrame
a を使用した の初期化structured array
は非常に低速です。ただし、データを連続する float numpy 配列に変更すると、高速になります。しかしDataFrame
、浮動小数点数と整数を混在させる必要があります。
さらにいくつかのテストを行った後、DataFrame が実際に全体をコピーしていることに気付きました(これは、初期化にフロート ビューをstructured array
使用する場合には発生しません)。structured array
ここで詳細を見つけました: https://github.com/pydata/pandas/issues/9216
初期化を高速化し、コピーを回避する方法はありますか? 私は別の方法を受け入れていますが、データはstructured array
.
python - numpy 構造化配列の dtype 名とフォーマットの変更
numpy で構造化配列を使用していくつかの作業を行っています (最終的には pandas データフレームに変換します)。
ここで、いくつかのデータを読み取り (実際には一部のデータをメマッピングします)、ユーザー指定の制約でフィルター処理することにより、この構造化配列を生成します。次に、このデータを、読み取った形式 (読み取り元のファイルのスペースを節約するためにすべてが int である) から、より使いやすい形式に変換して、いくつかの単位変換を行うことができるようにします (つまり、にアップコンバートします)。フロート)。
構造化されたデータ型を変更する途中で、興味深い成果物 (または何か) に気付きました。データを読み取ると、次によって作成されるのと同じ構造化配列が得られるとします (実際のコードでは、dtype ははるかに長く複雑ですが、mwe にはこれで十分です)。
これにより、
構造化配列として
ここで、2 番目のコンポーネントの名前を変更しながら、これらの dtype の両方を double にアップコンバートしたいとします。それは簡単なはずです
しかし結果は予想外
2 番目のコンポーネントのデータはどうなりましたか? この変換を行うことができますが、物事を分割すると
その結果、正しい出力が得られます
がastype
構造化された dtype で呼び出されると、numpy は各コンポーネントの名前を照合し、指定された型をコンテンツに適用するようです (ここで推測するだけで、ソース コードを見ていません)。この変換をすべて一度に行う方法はありますか (つまり、形式の名前とアップコンバージョン)、それとも単に手順を実行する必要がありますか? (段階的に行う必要がある場合は大したことではありませんが、これを行うための単一のステップの方法がないのは奇妙に思えます。)
c - 構造体配列の C プログラミング FILE 出力
次の入力を使用してコードを実行すると、ランタイム エラーが発生します。
これを解決するには助けが必要です。
以前は、アンパサンド/& を次の場所に置きました。
そして面白い数字が出てきました:
コード:
python - NumPy 構造化配列の真の再帰的 `tolist()`
私が理解していることから、NumPy 配列をネイティブ Python リストに変換する推奨される方法は、ndarray.tolist
.
残念ながら、構造化された配列を使用する場合、これは再帰的に機能しないようです。実際、いくつかのndarray
オブジェクトは結果のリストで参照されており、変換されていません:
この問題を回避するための簡単な関数を作成しました。
これを使用すると、期待される結果が得られます。
この関数の問題は、ndarray.tolist
出力する各リスト/タプルを再作成することにより、ジョブを複製することです。最適ではありません。
質問は次のとおりです。
- この動作は
ndarray.tolist
予期されるものですか? - これを実現するためのより良い方法はありますか?
python - 名前付き配列で numpy の高度なスライシングを使用すると、予期しない動作が発生する
numpy の名前付き配列を使用すると、次の 2 つのケースで異なる動作が観察されます。
- ケース: 最初に高度なスライスにインデックス配列を使用し、次にサブ配列を名前で選択する
- ケース: 最初にサブ配列を名前で選択し、次にインデックス配列を使用して高度なスライスを行う
次のコードは例を示しています
2 つの印刷コマンドの出力は、[ 1. 1. 1. 1. 1.] と [ 1. 22. 1. 22. 22.] です。要素を設定するときに、選択の順序を変更すると結果が異なるのはなぜですか?