numpy配列の計算方法を自作してみた 不明な形状での計算
初めに
配列の計算って大変だと思うことありませんか?
特に初心者の方はどこの要素を指しているのか、何でエラーになるのか、など多くのことで混乱してしまいます。それを簡単にするnumpyはとても便利だったので、仕組みを考えて作成してみました。
形状のわかる場合
例えば配列a, bがあるとする。2つの配列の形状は同じだが、形状は不明である。
まずは、わかる形状の場合から始めてみる。
この時、各要素の和を計算したい場合は
このようにしてもよい。
result:[[3, 4], [7, 9]]
けれど大変だし、形状がわからない時にfor文を何回使えばいいかわからない。
Vオブジェクト
そこで、配列をclassにして演算を可能にすることにした。
class名をVとする。
これは配列状態だとまた同様の処理をするというループを可能にしている。
実際にnumpyの中身を見たことはないから同じとは限らないけれど、とても配列の計算が簡単になると思う。ちなみに使用するときは次のように定義する。
A+Bの結果は[[3, 4], [7, 9]]である。
このクラスさえ定義すれば、for文を何回も書かなくていいし、形状を後から変形させても大丈夫である。Vオブジェクト同士の計算のみを想定しているコードなので他の数値との計算を可能としたい場合は条件分岐をする必要がある。
おまけ
足し算以外の特殊メゾッドと、Vオブジェクトの出力用メゾッド
Calculation関数の名前が変更されているのでご注意ください。
otherがただの数値の場合、全ての配列要素に対して操作を行うなど、拡張することができます。好きなようにカスタマイズできるので、class管理はとても楽しいですね。
もともと、AI開発のために作ったのですが、他のコードにも全然使えそうです。
記事を読んでいただきありがとうございました。
pythonで本格的なライブラリを作ってみたいですね。どんな型でも対応させるのはとても大変です。そのために既存のライブラリで勉強しようかなと思ってます。
けど、ライブラリって新しいことが多くてドキュメントを読んでも大変です笑
全然関係ないけど、FacebookがMetaに社名変更しましたよね。
仮想空間はサマーウォーズや竜とそばかすの姫でもある通り、とても楽しそうに思えます。通信速度も大きく向上し、もしかしたら予想もできないほどの空間が広がっているのかもしれませんね。
記事の内容に間違いがあった場合は、Twitterもしくはお問い合わせフォームからお伝えください。