さて、numpy の構造化配列に関するチュートリアルを行った後、いくつかの簡単な例を作成できます。
from numpy import array, ones
names=['scalar', '1d-array', '2d-array']
formats=['float64', '(3,)float64', '(2,2)float64']
my_dtype = dict(names=names, formats=formats)
struct_array1 = ones(1, dtype=my_dtype)
struct_array2 = array([(42., [0., 1., 2.], [[5., 6.],[4., 3.]])], dtype=my_dtype)
(私の意図した使用例では、3 つ以上のエントリがあり、非常に長い 1 次元配列が使用されます。) したがって、基本的な計算を実行しようとするまでは、すべてうまくいきます。次のすべてでエラーが発生します。
struct_array1 + struct_array2
struct_array1 * struct_array2
1.0 + struct_array1
2.0 * struct_array2
どうやら、単純な演算子 (+、-、、/) は、最も単純な構造化配列でもサポートされていません。または、何か不足していますか?他のパッケージを検討する必要がありますか (パンダとは言わないでください。これは完全にやり過ぎです)。これは当然の能力のように思えるので、少し唖然とします。しかし、ネット上でこれについてのおしゃべりを見つけるのは難しい. これは構造化配列の有用性を著しく制限していませんか? 辞書にパックされた配列ではなく、構造配列を使用するのはなぜですか? これが扱いにくいかもしれない技術的な理由はありますか? あるいは、オーバーロードという骨の折れる作業を実行することが正しい解決策である場合、操作を高速に保ちながらそれをどのように行うのでしょうか?