Numpy 배열에 조각 단위 함수를 적용하는 효율적인 (속도) 방법은 무엇입니까?Numpy 배열의 조각 별 기능
For (1) : x<=2 f(x) = 2*x + x^2
(2) : x>2 f(x) = -(x^2 + 2)
가 여기에 내가 무슨 짓을했는지처럼
는 말, 예를 들어, 낱낱 기능은 다음과 같습니다.
data = np.random.random_integers(5, size=(5,6))
print data
np.piecewise(data, [data <= 2, data > 2],
[lambda x: 2*x + pow(2, x),
lambda x: -(pow(x, 2) + 2)])
data =
[[4 2 1 1 5 3]
[4 3 3 5 4 5]
[3 2 4 2 5 3]
[2 5 4 3 1 4]
[5 3 3 5 5 5]]
output =
array([[-18, 8, 4, 4, -27, -11],
[-18, -11, -11, -27, -18, -27],
[-11, 8, -18, 8, -27, -11],
[ 8, -27, -18, -11, 4, -18],
[-27, -11, -11, -27, -27, -27]])
작은 배열, 큰 배열, 많은 함수 등을 처리하는 효율적인 방법이 있습니까? 내 관심사는 사용되는 람다 함수입니다. 이것이 Numpy에 최적화되어 있는지 확실하지 않습니다.
좋은 답변입니다. 'np.select()'또는'np.where()'를 사용하는 또 다른 장점은 계산을 할 때 전체 배열에 접근 할 수 있다는 것입니다. 함수가 입력의 다른 값 (예 : 각 점의 인접 값)에 따라 다르면이 방법이 유용합니다. 그러나 OP의 경우에는 문제가되지 않으며'np.piecewise()'가 좋습니다. –