본문 바로가기
파이썬

파이썬 배열에서 낮은 값을 0으로 만드는 가장 빠른 방법은 무엇입니까?

by º기록 2021. 1. 18.
반응형

그래서, 각각 100 개의 요소를 가진 100,000 개의 float 배열이 있다고 가정 해 봅시다. 가장 높은 X 개의 값이 필요하지만 Y보다 큰 경우에만 해당됩니다.이 값과 일치하지 않는 요소는 0으로 설정해야합니다. Python에서이를 수행하는 가장 빠른 방법은 무엇입니까? 순서를 유지해야합니다. 대부분의 요소는 이미 0으로 설정되어 있습니다.

샘플 변수 :

array = [.06, .25, 0, .15, .5, 0, 0, 0.04, 0, 0]
highCountX = 3
lowValY = .1

예상 결과:

array = [0, .25, 0, .15, .5, 0, 0, 0, 0, 0]

 

해결 방법

 


array_np = numpy.asarray(array)
low_values_flags = array_np < lowValY  # Where values are low
array_np[low_values_flags] = 0  # All low values set to 0

이제 highCountX 가장 큰 요소 만 필요하면 작은 요소를 0으로 설정하고 정렬하는 대신 "잊고"큰 요소 목록 만 정렬 할 수도 있습니다.

array_np = numpy.asarray(array)
print numpy.sort(array_np[array_np >= lowValY])[-highCountX:]


 

참조 페이지 https://stackoverflow.com/questions/1623849

 

 

반응형

댓글