두 개의 ndarrays a와 b를 추가 할 때 numpy.add(a,b)
과 a+b
사이에 차이가 있습니까? 설명서에 numpy.add
은 "Equivalent to x1 + x2 in terms of array broadcasting."입니다. 그러나 나는이 의미가 무엇인지 모릅니다. numpy.add(numpy.array([1,2,3]),4)
도 작동합니다."numpy.add (a, b)"와 "a + b"의 차이점은 무엇입니까?
답변
파이썬 구문에서 a+b
은 a.__add__(b)
으로 변환됩니다. a.__add__
은 a
유형의 오브젝트에 대한 추가를 구현하는 메소드입니다. 숫자에는 이러한 메소드가 있으며 목록도 ([1,3]+[4]
) 수행되며 문자열 ('abc'+'d'
)도 마찬가지입니다.
numpy
dtypes
위해) 그
ndarray
클래스
__add__
(및 다른 표준 방법
__...
)를 구현하고있다.
그건 모두 표준 파이썬이고 numpy
이며 영원히 계속되었습니다.
np.add
은 ufunc
입니다. 해당 문서를 확인하십시오 - out
매개 변수 및 Binary ufuncs:
섹션을 참조하십시오. 함수이고, , reduceat
등과 같은 몇 가지 메소드가 있습니다. a.__add__
(및 +
)은 그렇지 않습니다.
배열이나 숫자가 두 개인 경우 합산하고자하는 경우 자연스러운 것은 +
, a+b
입니다.
In [19]: np.add([[1],[2],[3]],[4,1])
Out[19]:
array([[5, 2],
[6, 3],
[7, 4]])
In [20]: np.array([1,2,3])[:,None]+np.array([4,1])
Out[20]:
array([[5, 2],
[6, 3],
[7, 4]])
그리고 당신의 예 :
2D 방송을 사용In [16]: [1,2,3]+[4]
Out[16]: [1, 2, 3, 4] # default list concatenation
In [17]: np.add([1,2,3],[4])
Out[17]: array([5, 6, 7]) # convert lists to arrays and sum
또는 예 : np.add
이
비교 특별한 경우에 유용하다, 예를 들어, 어떤 일이 두 목록에 발생
In [21]: numpy.add(numpy.array([1,2,3]),4)
Out[21]: array([5, 6, 7])
In [22]: numpy.array([1,2,3])+4
Out[22]: array([5, 6, 7])
"배열 방송의 관점에서 x1 + x2와 같습니다." 의미, 그들은 모두 작동하고 동일한 일을합니다.
broadcasting
은 또 다른 제목입니다.
==================는 @
연산자와 평행 np.matmul
상당히 다르다. @
연산자는 최근에 파이썬 인터프리터에 추가되었습니다. 정의 된 경우 __matmul__
메소드에 대한 호출로 변환됩니다. 새로운 numpy
버전에는 이러한 정의가 있습니다. 그러나이 방법은 파이썬 숫자 나리스트에 대해서는 정의되어 있지 않습니다. 동일한 코드를 참조하는 기능 버전 np.matmul
도 있습니다. x.dot
과 np.dot
의 쌍이 있지만, 파이썬에서 인식 할 수있는 연산자가 없거나 x.__dot__
입니다.
저는 add()
이 처음이었을 때 라이브러리가 개선되어 일반 수학 연산자를 얻었습니다.
현재, 우리는 파이썬 3.5와 numpy에서 같은 것을 보았습니다. 행렬 곱셈은 연산자 @
에 의해 수행 될 수 있습니다. 그 이전에는 배열 배열 행 dot()
메서드를 통해서만 배열 행렬을 수행 할 수있었습니다.
브로드 캐스트는 전체 배열에 숫자를 추가하는 것과 같이 크기가 다른 배열간에 작업을 수행 할 수있는 기능을 의미합니다. 이것은 배열의 연산자에서도 작동합니다.
숫자를 배열에 추가하는 것은 방송 기능의 아주 작은 예일뿐입니다. Broadcasting 에 대한 자세한 내용은 여기를 참조하십시오. 메모리와 코딩을 저장하는 매우 멋진 기능이지만 첫 번째 읽기에는 이해하기 쉽지 않습니다.
- 1. a = a + b와 a + = b의 차이점은 무엇입니까?
- 2. * a = b와 a = & b의 차이점은 무엇입니까?
- 3. double a = a + int b와 int a + = double b의 차이점은 무엇입니까?
- 4. [:] = b와 a = b [:]의 차이점은 무엇입니까? (Python)
- 5. (a | b)가 a - (a & b) + b와 같은 이유는 무엇입니까?
- 6. a = b와 b = a의 차이는?
- 7. A == B 대 B == A, 차이점은 무엇입니까
- 8. 스칼라에서 A # B의 의미는 무엇입니까
- 9. Numpy가 a + b와 a = a + b를 다르게 취급하는 이유
- 10. $ A + $ B와 $ A, $ B가 Test-Path와 다르게 상호 작용하는 이유
- 11. 활동 A → B → C → A. A onActivityResult에서 B의 데이터를 얻는 방법
- 12. a + b와 .__ add 사이의 차이점 __ (b)
- 13. ++와 a + 1의 차이점은 무엇입니까?
- 14. .lib와 .a 파일의 차이점은 무엇입니까?
- 15. .so와 .a 파일의 차이점은 무엇입니까?
- 16. int b = 0, a = 1; b = ++ a + ++ a; b의 값은 얼마입니까? 그것을위한 계산은 무엇입니까?
- 17. A, B, C에 색인이 있으면 A, B의 색인이 중복됩니까?
- 18. 하스켈 :`Num [a] => a`와`Num a => [a]`사이의 차이점은 무엇입니까
- 19. "("A B의 C ")"또는 A B의 C - 정규 표현식 정규 표현식 위
- 20. php에서 if (isset ($ a))와 if ($ a)의 차이점은 무엇입니까?
- 21. JavaScript에서 var a = 5의 차이점은 무엇입니까? 및 var a = 5?
- 22. 정규 표현식에서 "a {1}"과 "a"의 차이점은 무엇입니까?
- 23. C의 * (a [1])와 * (* a + 1)의 차이점은 무엇입니까?
- 24. "friend struct A;"의 차이점은 무엇입니까? 및 "친구 A;" 통사론?
- 25. '(a b c)와 ('a 'b'c ')의 차이점은 무엇입니까?
- 26. 캐스트의 차이점은 무엇입니까? (A) x 및 x는 A?
- 27. 모듈 B의 모듈 A 필드를 사용하는 방법
- 28. 동일합니까? (A == B의 경우 C == D)
- 29. C/C++에서 #define A B와 동일한 루비는 무엇입니까?
- 30. "A()"대 "A() = 기본값;" 암묵적인 A() 대?
자세한 답변을 주셔서 감사합니다. 만약이 권리가 있다면, numpy.add는 ufunc 이후 + b보다 더 빠릅니다 (a와 b가 ndarrays라는 것을 확신 할 수 있다면)? – Manu
하나가 ufunc이고 다른 하나가 속도 차이를 만들어서는 안된다는 사실. 이는 사용자 인터페이스 문제이며 속도가 아닙니다. add (add.reduceat와 같이)의 추가 기능이 필요하지 않으면 나는'+'를 사용한다. – hpaulj