列にさまざまなデータ型が含まれているnumpy.array
s があり、列にもさまざまな関数を適用する必要があります。配列にも関数があります。
まあ言ってみれば:
a = array([[ 1, 2.0, "three"],
[ 4, 5.0, "six" ]], dtype=object)
functions_arr = array([act_on_int, act_on_float, act_on_str])
物事を分割することでこれを行う方法は確かに考えられますが、私にとって最も自然に思えるのは、ブロードキャストとの要素ごとの乗算、および演算子としての機能と考えることです。だから私は次のようなことをしたい
functions_arr*a
の効果を得る
array([[act_on_int(1), act_on_float(2.0), act_on_str("three")],
[act_on_int(4), act_on_float(5.0), act_on_str("six") ]])
それらの線に沿って何かを達成する方法を知っていますか?
編集:質問の配列の定義を変更して、dtype=[object]
人々が指摘したように、配列が意図した方法で型を格納することが重要であると指摘しました。
回答とコメントありがとうございます!私は送信者の回答を受け入れましたが、これは私が考えていたものに非常に近いと感じています.
演算が乗算に似ていると考える方法について混乱があったように思われるので、別の例でそれを明確にしましょう。
ご存じのとおり、次のような操作です。
v = array([1,2,3])
u = array([[5,7,11],
[13,17,19]])
v*u
とyieldv
の行をブロードキャストしますu
array([[ 1*5, 2*7, 3*11],
[1*13, 2*17, 3*19]])
すなわち
array([[ 5, 14, 33],
[13, 34, 57]])
v
たとえば、del 演算子に置き換えるとしたら、次のようになります (以下は実際には動作する Python コードではありません:)
V = array([(d/dx),(d/dy),(d/dz)])
u = array([[5,7,11],
[13,17,19]])
V*u
屈服する(精神的に)
array([[(d/dx)5, (d/dy)7, (d/dz)11]],
[(d/dx)13,(d/dy)17,(d/dz)19]])
一連の定数の導関数をとることは、最もu
興味深い操作ではないことを認めます。いずれにせよ、これが少なくとも私の推論と、タイトルの「(python 関数を演算子として使用する?)」に関するビットの両方をより明確にすることを願っています。x
y
z