2012-11-27 3 views
4

NumPy 배열이 있는데, A이라고합시다. 다음 코드의 동작은 내게 분명하지 않다 :NumPy 배열에 바인딩 된 변수의 독립성

b = A[3,:]; 
A[3,:] = 0; 

세 번째 행은 b에 저장해야하지만 놀랍게도 b는 제로가된다!

어떤 도움말이 필요합니까?

+1

당신이 일반적으로 필요하지 않습니다해야 당신은 라인 끝에 세미콜론을 사용하지 말아야합니다 파이썬에서 – bmu

답변

2

복사본을 만들려면 실제로 copy을 만들어야합니다! 내가 :-) 볼 MATLAB/옥타브에서 마이그레이션

+0

고마워요! 해결됨;) – Mojtaba

+0

@Mojtaba 위대한 - 당신이 그것을 원한다면 대답을 "수락"하십시오 : 체크 표시를 클릭하십시오. –

2

:

b = A[3,:].copy() 

(문이 필요 후 어떤 세미콜론. 그런데이, 파이썬은 C되지 않습니다)?

1) 파이썬은 MATLAB의 1 기반 배열과 달리 0 기반 배열을 사용한다는 것을 기억하십시오. A[3,:]은 실제로 네 번째 행을 줄 것입니다.

2) MATLAB 달리,이 같은 배열에서 슬라이스를 고려하면 슬라이서로slicee에서 슬라이스의 메모리 위치에 저장한다. Andrew J.가 말했듯이, 당신은 복사 할 필요가 있습니다. 당신이 "세 번째 행은 B에 저장해야합니다"원하는 명세서를 바탕으로

, 코드는

b = A[2,:].copy() 
+0

하하, 예! 너 조심해! 고마워요 :) – Mojtaba

+0

:-) 그것은 경험의 시선입니다. 6 년 넘게 MATLAB을 프로그래밍 한 후에는 최근에 많은 Python 개발을하고 있습니다. 그 중 일부는 "pythonic"코드를 작성하는 데있어 매우 다른 사고 방식이 필요하지만 적어도 벡터화는 여전히 (일반적으로) 쉽게 완료됩니다! 재미있게 보내십시오. –

관련 문제