私は人の年齢が小さい(月、週)増分のシミュレーションを実行しています。しかし、私は、一貫していない年齢間隔で危険があります。その年齢のために危険を抽出する目的のために(最も近い年齢グループに任意の時点で私の年齢を丸くするための簡単な/効率的な方法はありますか?Pythonで指定された数値に丸めます
age_groups = np.array([0, .01, .1, 5, 10, 15, 20, 25, 30, 35, 40])
私は人の年齢が小さい(月、週)増分のシミュレーションを実行しています。しかし、私は、一貫していない年齢間隔で危険があります。その年齢のために危険を抽出する目的のために(最も近い年齢グループに任意の時点で私の年齢を丸くするための簡単な/効率的な方法はありますか?Pythonで指定された数値に丸めます
age_groups = np.array([0, .01, .1, 5, 10, 15, 20, 25, 30, 35, 40])
私はあなたが年齢を持っていると仮定し、そのような0.5、5、6、10、32、32.5、電気ショック療法あなたが持っているage_groups配列に分類する必要があるとして
。これは簡単な1ライナーです:)
は、あなたが持っていると仮定:
age_groups = np.array([0, .01, .1, 5, 10, 15, 20, 25, 30, 35, 40])
age = .5
ソリューションです:
nearest_age = age_groups[(np.abs(age_groups-age)).argmin()]
それをage_groupsアレイと、あなたが丸いたい年齢を渡し、関数にその行を入れて:)
これはベクトル化しないことに注意してください。大きな配列をブロードキャストして作成しない限り、searchutortedでunutbuの答えは効率的なベクトル化バージョンです。 – user333700
おそらくで、これらの要素をclusterizeしたいと思いますk-meanアルゴリズム、ここではいくつかの答えは以下の通りです。Python k-means algorithm
は、あなたがしたいと仮定します年齢をage_groups
で定義されたビンにグループ化します。 そして、あなたはそれぞれの年齢はnp.searchsortedを使用してに属する年齢範囲を見つけることができます。
import numpy as np
ages=np.array([0,0.05,1,3,5,10,13,19,25,35])
age_groups = np.array([0, .01, .1, 5, 10, 15, 20, 25, 30, 35, 40])
index=age_groups.searchsorted(ages,side='left')
for age,nearest_age in zip(ages,age_groups[index]):
print('{a} --> {n}'.format(a=age,n=nearest_age))
利回り
0.0 --> 0.0
0.05 --> 0.1
1.0 --> 5.0
3.0 --> 5.0
5.0 --> 5.0
10.0 --> 10.0
13.0 --> 15.0
19.0 --> 20.0
25.0 --> 25.0
35.0 --> 35.0
は、あなたの危険年齢間隔の例を挙げてもらえますか?それぞれの個人がどのハザードグループに該当するのかを特定したいと思うように思えますが、あなたが与えた情報からは分かりません。 –