문제

로 건너뛸 수 있습니다 결론지 않는 경우 관리에 대해 배경:

나는 다음과 같은 코드에서는 Python:

ratio = (point.threshold - self.points[0].value) / (self.points[1].value - self.points[0].value)

는 나에게 잘못된 값입니다.예를 들어:

threshold:  25.0
self.points[0].value:  46
self.points[1].value:  21

내:

ratio:  -0.000320556853048

는 잘못된 것입니다.

그것으로 찾고,내가 깨달았는 self.points[0].valueself.points[1].value] are of the typenumpy.uint16`,그래서 난:

21 - 46 = 65511

는 동안 나는 결코 정의된 형식 point.threshold.내가 다 할당됩니다.내가 상상 그것은 바닐라 int.

결론

할 수 있는 방법을 강제로 빼기의 두 개의 uints 에 서명할?

도움이 되었습니까?

해결책

거의 아무것도 uints 과가 있을 수 있습니다,그래서 그냥 주 이하는 다른 무언가를하기 전에 빼기입니다.

이후 한계값=25.0(참고 소수점),그것의 float,그래서 빼기 및 부분이 모든 작업을 만큼 당신이 사용하지 않는 uints.

다른 팁

만,확실한 해결책은 아마 캐스팅을 떠:

ratio = (float(point.threshold) - float(self.points[0].value)) / (float(self.points[1].value) - float(self.points[0].value))

이나 내 생각할 수 있었 던지기 중 하나 numpy 서명된 형식입니다.

그 값이 실제로 할 필요가 uint16 대신 int16?지 않는 한 그들이 할 수 있는 값의 2**15 또는 위(하지만 아래에 아직도 2**16 에)당신이 단순히 수로 유지하 int16 및 수행과 그것--unsigned 수로,당신은 발견되는 까다로울 수 있(지에 numpy;-).해야 하는 경우에 uint16,다음 캐스팅으로 다윗이 제안이 작동하지만 경우에 당신은 단순히 사용 int16 것이 더 빠르고 읽을 수 있습니다.

BTW,그것은 다음과 같습니다.임계값 float,지 int(좋은 일도 그렇지 않으면 그 부문은 방법은 당신이 코드 그것을 잘라내는 하나 당신에게 좋은 아이디어를 줄 것이 가져오는 진정한 부서에서 미래,으로 지원되었에서 많 2.* 릴리즈 파이썬은--그리고 마지막으로 방문 작품에서 3.*).이 .025.0 "그것다"그리고 그는 부유물이 아닌 int.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top