데이터를 임의의 숫자로 반올림하여이 목표를 달성하려는 것이 확실하지 않습니다.
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
을 : 당신은 당신이 그러나 달성하기 위해 노력하고하는 것은 다음과 같이 수행 할 수 있습니다 (10)
에 의해 배열을 곱한 후/floor
기능을 보내고 round
중간 점 함수 또는 ceil
를 사용하여 하나를 고려할 수 있습니다 귀하의 질문에 물어 데이터 집합을 반환합니다. 그것을 할 수있는 더 좋은 방법이 있다고 확신합니다 :
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