2017-04-15 1 views
1

다소 간단한 일이지만 여전히 numpy mgrid로 성공하지 못합니다 & meshgrid. 내가 100 개 소자 NumPy와 벡터 가지고numpy mgrid 또는 meshgrid를 사용하여 간단한 작업을 수행하는 방법

[0,0,0...0] 

및 I는 그런 1000x100 NumPy와 배열을 생성하고자, 다음의 벡터 값으로 전환 0.1하여 벡터 값을 하나 증가 할 때마다 1.0 도달 할 때 . 그래서 첫 번째 반복은 저를 주어야한다 : 지금부터

[0.1 0 0..0] 
[0.2 0 0..0] 
. 
. 
[0.9 0 0..0] 
[1.0 0 0..0] 

내가 이전 값을 유지, 두 번째 벡터 번호를 반복해야합니다 등등

[1.0 0.1 0 0..0] 
[1.0 0.2 0 0..0] 
[1.0 0.3 0 0..0] 

그리고있다. 마지막 행렬은 1000x100과 같아야합니다. 그러나 모든 값을 하나의 큰 숫자 배열로 모을 필요는 없습니다. 각 반복에서 일치하는 벡터를 반복하여 생성하면됩니다. 미리 감사드립니다.

def create_stepped_cols(n): # n = number of cols 
    out = np.zeros((n,10,n)) 
    r = np.linspace(0.1,1.0,10) 
    d = np.arange(n) 
    out[d,:,d] = r 
    out.shape = (-1,n) 
    np.maximum.accumulate(out, axis=0, out = out) 
    return out 

샘플 실행 - -

답변

1

여기 initializationnp.maximum.accumulate를 사용하여 접근 방식

In [140]: create_stepped_cols(3) 
Out[140]: 
array([[ 0.1, 0. , 0. ], 
     [ 0.2, 0. , 0. ], 
     [ 0.3, 0. , 0. ], 
     [ 0.4, 0. , 0. ], 
     [ 0.5, 0. , 0. ], 
     [ 0.6, 0. , 0. ], 
     [ 0.7, 0. , 0. ], 
     [ 0.8, 0. , 0. ], 
     [ 0.9, 0. , 0. ], 
     [ 1. , 0. , 0. ], 
     [ 1. , 0.1, 0. ], 
     [ 1. , 0.2, 0. ], 
     [ 1. , 0.3, 0. ], 
     [ 1. , 0.4, 0. ], 
     [ 1. , 0.5, 0. ], 
     [ 1. , 0.6, 0. ], 
     [ 1. , 0.7, 0. ], 
     [ 1. , 0.8, 0. ], 
     [ 1. , 0.9, 0. ], 
     [ 1. , 1. , 0. ], 
     [ 1. , 1. , 0.1], 
     [ 1. , 1. , 0.2], 
     [ 1. , 1. , 0.3], 
     [ 1. , 1. , 0.4], 
     [ 1. , 1. , 0.5], 
     [ 1. , 1. , 0.6], 
     [ 1. , 1. , 0.7], 
     [ 1. , 1. , 0.8], 
     [ 1. , 1. , 0.9], 
     [ 1. , 1. , 1. ]]) 

In [141]: create_stepped_cols(100).shape 
Out[141]: (1000, 100) 
+0

이 매력처럼 작동, 매우 감사합니다! –

관련 문제