[PYTHON] 내적을 계산하는 파이썬적인 방법은 무엇입니까?
PYTHON내적을 계산하는 파이썬적인 방법은 무엇입니까?
나는 두 개의 목록을 가지고 있는데, 하나는 A로 명명되고, 다른 하나는 B로 명명됩니다. A의 각 요소는 트리플이며 B의 각 요소는 숫자입니다. 나는 다음과 같이 정의 된 결과를 계산하고 싶다.
B [1] + ... + A [n-1] [0] * B [n-1] * B [0]
나는 논리가 쉽지만 pythonic 방식으로 쓰는 방법을 알고 있습니까?
감사!
해결법
-
==============================
1.
import numpy result = numpy.dot( numpy.array(A)[:,0], B)
http://docs.scipy.org/doc/numpy/reference/
너가 numpy없이 그것을하고 싶으면, 시험 하십시요
sum( [a[i][0]*b[i] for i in range(len(b))] )
-
==============================
2.파이썬 3.5는 내적 (dot product)에 대해 명시적인 연산자 @ 그래서 당신은 쓸 수 있습니다.
파이썬 3.5는 내적 (dot product)에 대해 명시적인 연산자 @ 그래서 당신은 쓸 수 있습니다.
a = A @ B
대신에
a = numpy.dot(A,B)
-
==============================
3.내가 좋아하는 Pythonic dot 제품은 다음과 같습니다.
내가 좋아하는 Pythonic dot 제품은 다음과 같습니다.
sum([i*j for (i, j) in zip(list1, list2)])
그래서 우리는 다음과 같이 할 수 있습니다.
sum([i*j for (i, j) in zip([K[0] for K in A], B)])
-
==============================
4.
from operator import mul sum(map(mul, A, B))
-
==============================
5.운영자 및 itertools 모듈 사용 :
운영자 및 itertools 모듈 사용 :
from operator import mul from itertools import imap sum(imap(mul, A, B))
-
==============================
6.아마도 이런 종류의 일에 가장 Pythonic 한 방법은 numpy를 사용하는 것입니다. ;-)
아마도 이런 종류의 일에 가장 Pythonic 한 방법은 numpy를 사용하는 것입니다. ;-)
-
==============================
7.
>>> X = [2,3,5,7,11] >>> Y = [13,17,19,23,29] >>> dot = lambda X, Y: sum(map(lambda x, y: x * y, X, Y)) >>> dot(X, Y) 652
그리고 그게 다야.
-
==============================
8.그러나 반복되는 해결책 일 수 있습니다.
그러나 반복되는 해결책 일 수 있습니다.
>>> u = [(1, 2, 3), (4, 5, 6)] >>> v = [3, 7]
평범한 파이썬에서는 :
>>> sum([x*y for (x, *x2), y in zip(u,v)]) 31
또는 numpy를 사용합니다 (user57368의 대답에 설명되어 있음).
import numpy as np >>> np.dot(np.array(u)[:,0], v) 31
-
==============================
9.위의 모든 대답은 정확하지만 제 의견으로는 내적을 계산하는 가장 비범 한 방법은 다음과 같습니다.
위의 모든 대답은 정확하지만 제 의견으로는 내적을 계산하는 가장 비범 한 방법은 다음과 같습니다.
>>> a=[1,2,3] >>> b=[4,5,6] >>> sum(map(lambda pair:pair[0]*pair[1],zip(a,b))) 32
-
==============================
10.dotproduct itertools recipe를 구현하는 타사 라이브러리 more_itertools 사용 :
dotproduct itertools recipe를 구현하는 타사 라이브러리 more_itertools 사용 :
import more_itertools as mit a = [1, 2, 3] b = [7, 8, 9] mit.dotproduct(a, b) # 50
from https://stackoverflow.com/questions/5919530/what-is-the-pythonic-way-to-calculate-dot-product by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] MATLAB 에서처럼 IPython에서 세션을 저장 하시겠습니까? (0) | 2018.10.31 |
---|---|
[PYTHON] json.dumps ()를 사용하는 동안 UnicodeDecodeError [duplicate] (0) | 2018.10.31 |
[PYTHON] 팬더는 열을 가로 질러 합계를하고 그 값에서 각 셀을 나눕니다. (0) | 2018.10.31 |
[PYTHON] Django의 CSRF 유효성 검사를 비활성화하는 방법은 무엇입니까? (0) | 2018.10.31 |
[PYTHON] numpy를 사용한 하나의 핫 인코딩 (0) | 2018.10.31 |