2013-04-10 2 views
2

다른 numpy 배열 처리 질문 : 2000³ 항목 numpy 고정 크기 (정수) 배열, 정수를 포함합니다. 배열에 다른 정수를 채워서 모든 차원으로 둘러싸여 있습니다. 이 정수는 전체 패딩 프로세스에 대해 고정되어 있습니다.큰 숫자 열의 배열을 채우기

  1. , 큰 NumPy와 배열을 만들기 패딩의 패딩 값과 "슬라이스"기존 영역을 포함 :

    padded=np.zeros((z+2,x+2,y+2)) 
    padded[1:z+1,1:x+1,1:y+1]=olddata 
    
  2. example (2D) 
    1----->000 
         010 
         000 
    

    그 결과로 이어지는 두 개의 아이디어가

  3. 값을 추가하려면 np.insert 또는 hstack, vstack, dstack을 사용하십시오.

    padded=np.insert(data,0,0,axis=0) 
    padded=np.insert(data,x+1,0,axis=0) etc. 
    

문제는 이러한 모든 방법이 적절한 위치에 있지 않으며 새 배열 (1)을 할당하거나 이전 배열 (2)을 복사한다는 것입니다. 장소에서 패딩을 수행 할 수있는 방법이 있습니까? 나는 그것이 numpy 1.7 이후로 알고있다. numpy.pad 모듈이 있습니다. 그러나 그것은 또한 어떤 종류의 할당과 오버 라이딩을 사용하는 것으로 보인다.

+0

패딩 된 배열로 작업 할 수 있습니까? –

+0

@ JanneKarila : 패딩 된 배열로 시작하는 방법을 모르겠습니다. 나는 rawdata를 가지고 있으며 어떤 시점에서 나는 그것을 덧붙여 야합니까, 그렇지 않은가요? – Dschoni

+1

원시 데이터를 NumPy 배열로 어떻게 가져 옵니까? 아마도 당신은 그 시점에서 패딩 안의 조각으로 그것을 읽을 수 있습니다. –

답변

1

메모리 레이아웃에 공간이 없으므로 패딩을 현재 위치에 추가 할 수 없습니다. 다른 방법으로 갈 수 있습니다 : 패딩 된 배열을 먼저 할당하고 패딩되지 않은 데이터에 액세스 할 때 패딩 된 배열을 뷰에 사용하십시오.

padded = np.empty((2002,2002,2002)) 
padded[0] = 0 
padded[-1] = 0 
padded[:,0] = 0 
padded[:,-1] = 0 
padded[:,:,0] = 0 
padded[:,:,-1] = 0 

unpadded = padded[1:-1, 1:-1, 1:-1]