データを任意の数値に丸めることで、これで何を達成しようとしているのか分かりません。あなたは中間点にround
機能のいずれかを検討したい、または10
あなたはしかし、このように行うことができます達成しようとしている何
によって配列を乗算した後、/ floor
機能をINGのceil
を使用したことがあります
import numpy as np
def cookdata(data):
#Assuming your data is sorted as per example array in your question
data = np.asarray(data)
i = 0
startidx = 0
while np.unique(data).size > np.ceil((data.max()-data.min())/0.1):
lastidx = startidx + np.where(data[startidx:] < np.unique(data)[0]+0.1*(i+1))[0].size
data[startidx:lastidx] = np.unique(data)[i]
startidx = lastidx
i += 1
return data
をこれは、あなたの質問で尋ねられたようにデータセットを返します。
data = np.sort(np.random.uniform(0.12, 0.5, 10))
data
array([ 0.12959374, 0.14192312, 0.21706382, 0.27638412, 0.27745105,
0.28516701, 0.37941334, 0.4037809 , 0.41016534, 0.48978927])
cookdata(data)
array([ 0.12959374, 0.12959374, 0.12959374, 0.27638412, 0.27638412,
0.27638412, 0.37941334, 0.37941334, 0.37941334, 0.48978927])
この関数は、最初の値に基づいて配列を返します。
ただし、任意のデータポイントに対して丸め値を必要としない、より簡単な操作を検討したいことがあります。 np.round(data, decimals=1)
を検討してください。ここで
data = np.asarray(data)
datamin = data.min()
data = np.floor((data-datamin)/0.1)*0.1+datamin
data
array([ 0.12959374, 0.12959374, 0.12959374, 0.22959374, 0.22959374,
0.22959374, 0.32959374, 0.32959374, 0.32959374, 0.42959374])
データではなく、最初の値の倍数の間の任意の値よりも、最初の値の倍数の通りです:あなたは初期値を維持したいnp.floor(data/0.1)*0.1
場合や:のようにあなたのケースでは、あなたもfloor
機能を使用することができます。
値が0.23に変更された場合、後ろの値は0.23ではなく0.12と比較され、0.32 ..... – user7544575