2016-08-03 3 views

답변

1

파이썬 구문에서 a+ba.__add__(b)으로 변환됩니다. a.__add__a 유형의 오브젝트에 대한 추가를 구현하는 메소드입니다. 숫자에는 이러한 메소드가 있으며 목록도 ([1,3]+[4]) 수행되며 문자열 ('abc'+'d')도 마찬가지입니다.

numpy

는 (적어도 숫자 dtypes 위해) 그 ndarray 클래스 __add__ (및 다른 표준 방법 __...)를 구현하고있다.

그건 모두 표준 파이썬이고 numpy이며 영원히 계속되었습니다.

np.addufunc입니다. 해당 문서를 확인하십시오 - 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.dotnp.dot의 쌍이 있지만, 파이썬에서 인식 할 수있는 연산자가 없거나 x.__dot__입니다.

+0

자세한 답변을 주셔서 감사합니다. 만약이 권리가 있다면, numpy.add는 ufunc 이후 + b보다 더 빠릅니다 (a와 b가 ndarrays라는 것을 확신 할 수 있다면)? – Manu

+1

하나가 ufunc이고 다른 하나가 속도 차이를 만들어서는 안된다는 사실. 이는 사용자 인터페이스 문제이며 속도가 아닙니다. add (add.reduceat와 같이)의 추가 기능이 필요하지 않으면 나는'+'를 사용한다. – hpaulj

0

저는 add()이 처음이었을 때 라이브러리가 개선되어 일반 수학 연산자를 얻었습니다.

현재, 우리는 파이썬 3.5와 numpy에서 같은 것을 보았습니다. 행렬 곱셈은 연산자 @에 의해 수행 될 수 있습니다. 그 이전에는 배열 배열 행 dot() 메서드를 통해서만 배열 행렬을 수행 할 수있었습니다.

브로드 캐스트는 전체 배열에 숫자를 추가하는 것과 같이 크기가 다른 배열간에 작업을 수행 할 수있는 기능을 의미합니다. 이것은 배열의 연산자에서도 작동합니다.

숫자를 배열에 추가하는 것은 방송 기능의 아주 작은 예일뿐입니다. Broadcasting 에 대한 자세한 내용은 여기를 참조하십시오. 메모리와 코딩을 저장하는 매우 멋진 기능이지만 첫 번째 읽기에는 이해하기 쉽지 않습니다.

관련 문제