여기 MWE가 있습니다.numpy 배열 목록의 요소를 제로화합니다.
다음과 같은 목록이 있습니다.
vectors = [np.array([ 0. , 0.8660254, 0. ]),
np.array([ 1.10501514e-08, 8.64943091e-01, 4.32832253e-02]),
np.array([ 1.34263203e-08, 8.61698881e-01, 8.64582689e-02]),
np.array([ 2.35976215e-08, 8.56300871e-01, 1.29417208e-01]),
np.array([ 1.32175872e-08, 8.48762560e-01, 1.72052683e-01])]
목표 : 목록에서 각 배열을 위해 나는 배열의 값에 대한 zero tolerance
을 설정합니다.
여기 내가 어떻게 했는가.
def set_zero(vector):
ZERO_TOL = 1e-07
vector[vector <= ZERO_TOL] = 0
return vector
new_vecs = [set_zero(vector) for vector in vectors]
이렇게하면 원하는 결과를 얻을 수 있습니다.
질문 : list comprehension
?을 사용하여 set zero
기능을 사용하지 않고이 작업을 수행 할 수있는 방법이 있습니까? 다음과 같은 뭔가 ...
희망찬 코드 :
ZERO_TOL = 1e-07
new_vecs = [vector[vector <= ZERO_TOL] = 0 for vector in vecs]
물어 이유는 내가 일하고 실제 배열이 긴 항목의 수천 내가이 내 코드를 최적화하고 싶습니다 이유.
은 속도가 중요하다 (당신은 2D
np.array
에 목록을 전환 가정) 왜 배열의 목록 대신 numpy 배열로 전체 구조를 유지하지 않을까요? – sascha