numpyで処理したいデータセットがあります。データは、オブジェクトとして処理したい追加のプロパティ変数を持つ空間内のポイントのセットとして見ることができます。データセットに応じて、ベクトルの長さは1、2、または3になりますが、特定のデータセット内のすべてのポイントで同じ長さになります。プロパティオブジェクトはカスタムクラスであり、任意の2つのポイントで同じである可能性があります。
したがって、このデータをランダムな例と見なしてください(CとHは、炭素または水素の原子特性を含むオブジェクト、または単にランダムなオブジェクトを表します)。これらはファイルを介して読み込まれるのではなく、アルゴリズムによって作成されます。ここで、Cオブジェクトは同じでも異なっていてもかまいません(たとえば、同位体)。
Example 3D data set (just abstract representation)
C 1 2 3
C 3 4 5
H 1 1 4
ベクトル操作や変換関数などのnumpy演算を実行できるように、すべての原子位置を含むnumpy配列が必要def translate(data,vec):return data + vec
です。また、プロパティオブジェクトを並行して処理したいと思います。1つのオプションは、両方に2つの別々の配列を設定することですが、1つの要素を削除する場合は、プロパティ配列の値も明示的に削除する必要があります。これは処理が難しくなる可能性があります。
使用を検討しましたnumpy.recarray
x = np.array([(1.0,2,3, "C"), (3.0,2,3, "H")], dtype=[('x', "float64" ),('y',"float6
4 ")、('z'、" float64 ")、('type'、object)])
しかしshape
、この配列のは(2,)
であるように見えます。これは、各レコードが独立して処理されることを意味します。また、このタイプでベクトル操作を機能させる方法を理解できないようです。
def translate(data,vec):return data + vec
translate(x,np.array([1,2,3]))
...
TypeError: unsupported operand type(s) for +: 'numpy.ndarray' and 'numpy.ndarray'
numpy.recarray
私が使うべきものは何ですか?object
要素が削除された場合にリンクされる並列配列を持つポイントの個別の数値行列を作成するなど、これをより簡単な方法で処理するためのより良い方法はありますか( np.delete
)?また、拡張する配列オブジェクトを作成することも簡単に検討しましたがndarray
、これは不要であり、壊滅的な可能性があると感じています。
どんな考えや提案も非常に役に立ちます。