2016-12-15 2 views
3

패키지에서 numpy는 두 개의 함수 크기 변경 및 모양 변경입니다. 내부적으로 어떻게 작동합니까? 그들은 어떤 보간법을 사용합니까? 코드를 살펴 보았지만 이해하지 못했습니다. 누구든지 나를 도울 수 있습니까? 또는 이미지의 크기가 어떻게 조정됩니까? 픽셀은 어떻게됩니까?numpy.resize 및 numpy.reshape 함수는 어떻게 파이썬에서 내부적으로 작동합니까?

+0

: 새로운 배열 원의 배열보다 큰 경우, 새로운 배열이 반복 복사로 채워진다. https://docs.scipy.org/doc/numpy/reference/generated/numpy.resize.html – user4421975

+0

'np.resize'도 아니고'np.reshape'도 이미지 크기 조정에 적합하지 않습니다. Numpy는 이미지가 아니라 배열에 관한 것입니다. – Eric

답변

2

내가 아는 한 numpy.reshape()은 매트릭스를 재구성합니다 (이미지인지 여부는 중요하지 않음). 보간을하지 않고 행렬의 항목을 조작합니다.

a = np.arange(12).reshape((2,6)) 


a= [[ 0 1 2 3 4 5] 
    [ 6 7 8 9 10 11]] 


b=a.reshape((4,3)) 

b=[[ 0 1 2] 
    [ 3 4 5] 
    [ 6 7 8] 
    [ 9 10 11]] 
5

어느 쪽도 보간하지 않습니다. 그리고 이미지의 보간과 픽셀에 대해 궁금해하는 경우, 아마도 원하는 기능이 아닙니다. 이미지의 해상도를 조작하는 일부 image 패키지 (예 : scipy)가 있습니다.

모든 numpy 배열에는 shape 속성이 있습니다. reshape은 데이터를 전혀 변경하지 않고 변경합니다. 새 모양은 원래 모양과 동일한 총 요소 수를 참조해야합니다.

x = np.arange(12) 
x.reshape(3,4) # 12 elements 
x.reshape(6,2) # still 12 
x.reshape(6,4) # error 

np.resize 덜 일반적으로 사용하지만, 파이썬으로 작성된 및 연구에 사용할 수 있습니다. 당신은 그것의 문서를 읽어야하고, x.resize은 다릅니다. 더 커지면 사실 값이나 패드가 0으로 반복됩니다. 1D 행동 크기 조정

예 :

In [366]: x=np.arange(12) 
In [367]: np.resize(x,6) 
Out[367]: array([0, 1, 2, 3, 4, 5]) 
In [368]: np.resize(x,24) 
Out[368]: 
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 0, 1, 2, 3, 4, 
     5, 6, 7, 8, 9, 10, 11]) 
In [369]: x.resize(24) 
In [370]: x 
Out[370]: 
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 0, 0, 0, 0, 0, 
     0, 0, 0, 0, 0, 0, 0]) 

최근의 질문에 대한 scipy.misc.imresize. 또한 scipy.ndimage.zoom 참조 : 워드 프로세서

Broadcasting error when vectorizing misc.imresize()

+1

_ "reshape는 ['.shape']"_을보다 정확하게 변경합니다. 실제로 호출 된 객체를 수정하는 대신 변경된 뷰를 만듭니다 – Eric

관련 문제