보시다시피 두 가지 옵션이 있습니다. (여기서 numpy는 np로 가져옴)
1. 람다 식 사용
이것은 간단한 함수를 다룰 때 사용할 수 있습니다. 함수 f : (x, y) = (x ^ 2, x + y)를 구현하고 싶다고 가정 해 보겠습니다. 그러면 다음과 같은 것이 작동 할 것으로 예상합니다.
f = lambda x,y : x**2, x + y
f = lambda x,y : (x**2, x + y)
내가 print(f(np.array([[1],[3]],float)))
또는 print(f(np.array([1,3],float)))
. 그러나 이러한 람다 식의 변형이 작동하지 않습니다.
2. "적절한"기능 정의
그러나 이것은 작동합니다.
def f(vec):
return np.array([vec[0] ** 2, vec[0] + vec[1]])
그러나 구문이 최적입니까? 위의 "적절한"함수를 벡터화하지 않으려면 어떻게해야합니까? 전체적으로 numpy-array 값을 취하는 numpy-array 값 함수를 어떻게 정의합니까?
lambda
또는 을 사용하는지 또는 def
로컬로 정의 된 변수로 계산을 수행 하는지는 실제로 중요하지 않습니다 . 함수를 사용하는 경우 입력 인수의 수가 정의와 일치해야합니다.
하지만 간단한 대화 형 예제로
두 가지 변수를 정의합니다.
In [121]: x, y = 1,3
In [122]: x**2, x+y
Out[122]: (1, 4) # returns a tuple
목록을 정의하십시오.
In [125]: vec = [1,3]
In [126]: vec[0]**2, vec[0]+vec[1]
Out[126]: (1, 4) # same tuple
또는 배열 :
In [127]: arr = np.array([1,3])
[126]
이것도 작동하지만 배열 인덱싱은 느립니다.
배열은 요소뿐만 아니라 전체 배열로 작업 할 때 가장 좋습니다. 예를 들어 배열의 모든 항을 제곱하거나 합산 할 수 있습니다.
In [128]: arr**2, arr.sum()
Out[128]: (array([1, 9]), 4)
이러한 계산은 모양 (2,)뿐만 아니라 모든 크기의 배열로 작동합니다.
위의 모든 튜플은 배열로 변환 할 수 있습니다.
In [133]: np.array([x**2, x+y])
Out[133]: array([1, 4])
Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.
En caso de infracción, por favor [email protected] Eliminar
Déjame decir algunas palabras