0
私はこのようになります8つの16バイト長のボイドレコードを持つnumpyの配列があります。配列を記録するためにnumpyボイド配列を変換しますか?
array([[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0],
[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0],
[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0],
[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0],
[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0],
[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0],
[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0],
[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]],
dtype='|V16')
そして、このようになりますカスタムDTYPEの8つの16B長いレコードを配列にキャストする必要があります。
を[(('x', 's0'), '<u4'), (('y', 's1'), '<u4'), (('z', 's2'), '<u4'), ('padding0', '<u4')]
どうすれば実現できますか?
私はarray.astype(self.dtype, copy=False, casting="unsafe")
、 を試みたが、私は私にはあまり意味がありません
ValueError: setting an array element with a sequence.
を取得します。
このデータはPyOpenCL(バッファをマッピングするメモリ)から来ていますが、実際には入力フォーマットやdtypeを変更できません。
['numpy.ndarray.view'](https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.ndarray.view.html)がそれを行う可能性があります。より具体的で安全なツールにすることができますが、入力形式を変更することが本当に不可能かどうかは疑問です。 – user2357112
'numpy.ndarray.view'が完璧に動作しました。ありがとうございます。私はそれを受け入れることができるように答えにすることができますか? PyOpenclではdtypeを制御するためのノブがありますが、レコードではなく単純なdtypeでしか機能しないようです。おそらくバグですが、適切に修正するためにも 'view'はおそらくまだ必要です。 – cube