2013-07-30 2 views

답변

5
In [34]: x = np.arange(4) 

In [35]: np.tile(x,(3,1)) 
Out[35]: 
array([[0, 1, 2, 3], 
     [0, 1, 2, 3], 
     [0, 1, 2, 3]]) 

하지만 조심해야 해 - 당신은 반복해서 같은 행을 복제하는 대신 broadcasting를 사용할 수 있습니다. 예를 들어

, 당신은 모양의 일부 배열 (3,4)가 있다고 가정 : 여기

In [40]: y = np.arange(12).reshape(3,4) 

In [41]: y 
Out[41]: 
array([[ 0, 1, 2, 3], 
     [ 4, 5, 6, 7], 
     [ 8, 9, 10, 11]]) 

과 당신의 x :

In [42]: x = np.arange(4) 

In [43]: x 
Out[43]: array([0, 1, 2, 3]) 

당신은 추가 할 수 있습니다 x (그 모양 (4,)입니다) y (모양은 (3,4))이고 NumPy는 자동으로 모양 (3,4)으로 x을 "브로드 캐스트"합니다 :

(3210)는 당신이 볼 수 있듯이, tilex 처음에 필요가 없습니다

In [45]: np.tile(x,(3,1)) + y 
Out[45]: 
array([[ 0, 2, 4, 6], 
     [ 4, 6, 8, 10], 
     [ 8, 10, 12, 14]]) 

와 결과를 비교. 사실 이 아니기 때문에 타일링 x이 아니라면 메모리를 절약 할 수 있습니다.

+1

고급 색인 생성 및'index_tricks' 모듈 인스턴스를 잊지 마십시오. 'x '가 평면 배열이라면'x [np.c _ [[range (x.size)] * n]]'는 타일링과 같은 효과를 갖습니다. (아마 직접 방송보다 더 많은 메모리를 사용하고있을지라도) – JAB

+0

매우 간결합니다. np.tile()은 제가 찾고 있던 방송 솔루션이었습니다. – poeticcapybara

관련 문제