私はこのようなものを手に入れようとしています:
def choozer(my_1D_array):
newArray = np.zeros((len(my_1D_array), 5))
for x in enumerate(my_1D_array):
if x[1]<3:
y = np.array([1,1,1,1,1]) #the y's can be any array of random values
elif 3<=x[1]<=5:
y = np.array([2,2,2,2,2])# don't need to be repeated
elif x[1]>5:
y = np.array([3,3,3,3,3])
newArray[x[0]] = y
return newArray
これは機能します...しかし、私には非常に回りくどいように見えます。効率は私のアプリケーションにとって重要です。だから私はそれをnp.selectと比較するというアイデアを得ました:
def np_choozer(my_1D_array):
condlist = [my_1D_array<3,
np.logical_and((3<=my_1D_array),(my_1D_array<=5)),
my_1D_array>5]
choicelist = [np.array([1,1,1,1,1]),
np.array([2,2,2,2,2]),
np.array([3,3,3,3,3])]
return np.select(condlist, choicelist)
...しかしサイコロはありません。軸1に選択リストの値を返します。上記の問題の一般的なバージョンを実行するためのより良い方法はありますか?
前もって感謝します。