2017-09-29 2 views
-3

나는 n 값의 배열을 가지고 있고, m 개의 값을 빼기를 원한다. (이전 결과에서 뺄 때마다).리스트의 파이썬 반복적 인 뺄셈

전체 행렬을 저장하고 싶습니다.

나는 루프에 대한 중첩 된 두 사람과 함께 시도했지만 나는 그것을 할 관리하지 않았고, 내가 어떤 엄격하게 관련 포스트 ...

데이터 = https://www.dropbox.com/s/anhyqq9f7h75qee/trace1.dat?dl=0

values_to_subtract = (데이터를 찾을 수 없습니다 - 케이)/m

K = 상수 값

예 :

,913,

나는 자신의 계산 된 금액 DX의 X의 모든 요소를 ​​줄이려 나는이 행렬을 얻기 위해 그것을 3 번하고 싶은 : 많은에게

Target Result

감사를

+2

실제 배열 및 예상 최종 결과 게시 – RomanPerekhrest

+0

질문을 편집하여 작은 예제를 보여줍니다. –

답변

0

이를 broadcasting을 사용하면 상당히 간단합니다. 예를 들어

:

당신의 배열이 호환 모양의 경우, 일반적으로, 좋은 방법의 모든 축을 따라 작업을 적용 할 것입니다 무엇을 방송
>>> import numpy as np 
>>> dx = np.array([[1], [2], [3]]) 
>>> dx 
array([[1], 
     [2], 
     [3]]) 
>>> dx * np.arange(4) 
array([[0, 1, 2, 3], 
     [0, 2, 4, 6], 
     [0, 3, 6, 9]]) 
>>> x = np.array([[10], [10], [10]]) 
>>> x - dx * np.arange(4) 
array([[10, 9, 8, 7], 
     [10, 8, 6, 4], 
     [10, 7, 4, 1]]) 

.

>>> dx * np.arange(4) 
array([[0, 1, 2, 3], 
     [0, 2, 4, 6], 
     [0, 3, 6, 9]]) 

NumPy와는 outer product, 즉 :

[1]     [0 1*1 2*1 3*1] 
[2] * [0 1 2 3] = [0 1*2 2*2 3*2] 
[3]     [0 1*3 2*3 3*3] 

을 복용하고 이것은 당신이 x에서 빼기 할 모든 값을 제공 :이 단계에서 그래서. x - dx * np.arange(4) 브로드 캐스팅은 열 벡터 x 소요의 마지막 동작이 유액 방정식 같이 동일하다

[10 10 10 10]  [0 1*1 2*1 3*1] 
[10 10 10 10] - [0 1*2 2*2 3*2] 
[10 10 10 10]  [0 1*3 2*3 3*3] 

처럼 보이도록 외부 생성물 (각각의 열에서의 값을 복사)과 동일한 형상으로 방송 :

[x1 x1-dx x1-2dx x1-3dx] 
[x2 x2-dx x2-2dx x2-3dx] 
[x3 x3-dx x3-2dx x3-3dx] 
+0

Alexander에게 감사드립니다 ...하지만 어떤 이유로 (당신과 같은) 제 코드는 피연산자가 다른 모양으로 함께 방송 될 수 없기 때문에 작동하지 않습니다. 그것은 작동하지 않는 바깥 쪽 제품입니다. 내 데이터 (내 'x')가 np.loadtxt를 사용하여 txt 파일로로드되는 것을 고려해보십시오. – Giulia

+0

내 모습이 내 모습과 다를 수도 있습니다. 나의'x'는 shape (3,1)입니다. 무엇 당신이야? –

+0

np.shape로 확인하면 (10136) – Giulia