>  기사  >  백엔드 개발  >  NumPy의 Reshape 기능에서 -1의 중요성은 무엇입니까?

NumPy의 Reshape 기능에서 -1의 중요성은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-10-20 22:10:30237검색

What is the Significance of -1 in NumPy's Reshape Function?

NumPy Reshape에서 -1의 역할 이해

NumPy에서 reshape는 NumPy의 모양을 변형할 수 있는 강력한 기능입니다. 기본 데이터를 유지하면서 배열합니다. reshape를 사용하면 배열의 새로운 모양을 차원의 튜플로 지정할 수 있지만 가끔 -1이라는 수수께끼 같은 값을 만날 수도 있습니다.

-1의 의미 풀기

배열을 재구성하는 기준은 새로운 모양이 원래 모양과 호환되어야 한다는 것입니다. 이 컨텍스트에서 -1은 알 수 없는 차원에 대한 자리 표시자 역할을 합니다. 한 차원을 -1로 지정하면 NumPy는 배열의 전체 길이와 지정된 다른 차원을 기반으로 해당 차원의 실제 값을 결정합니다.

-1을 사용한 재구성의 예

형상 변경 시 -1이 어떻게 작동하는지 보여주는 예를 살펴보겠습니다.

<code class="python">import numpy as np

z = np.array([[1, 2, 3, 4],
         [5, 6, 7, 8],
         [9, 10, 11, 12]])

print(z.shape)  # (3, 4)</code>

(12,)로 형식 변경

<code class="python">reshaped_z = z.reshape(-1)

print(reshaped_z.shape)  # (12,)</code>

여기서 경우 새 모양은 (-1,)로 지정되며 이는 1D 배열을 원함을 나타냅니다. NumPy는 알 수 없는 차원을 12로 계산하여 원래 배열의 모든 요소를 ​​포함하는 1D 배열을 생성합니다.

(-1, 1)

<code class="python">reshaped_z = z.reshape(-1, 1)

print(reshaped_z.shape)  # (12, 1)</code>
여기서 NumPy는 -1을 알 수 없는 행 차원으로 해석하고 열 차원을 1로 지정합니다. 결과는 12개의 행과 1개의 열이 있는 2D 배열입니다.

(1, -)로 재형성 1)

<code class="python">reshaped_z = z.reshape(1, -1)

print(reshaped_z.shape)  # (1, 12)</code>
이 시나리오에서는 행 수를 1로 지정하고 열 수는 알 수 없습니다. NumPy는 열 차원을 12로 결정하여 1개의 행과 12개의 열이 있는 2D 배열을 생성합니다.

단일 기능 또는 샘플에 -1 사용

참고하는 것이 중요합니다. NumPy는 단일 특성으로 데이터를 재구성하려면 (-1, 1)을 사용하고 단일 샘플을 포함하는 데이터에는 (1, -1)을 사용하도록 권장합니다.

<code class="python"># Reshape for a single feature
single_feature = np.reshape(z, (-1, 1))

# Reshape for a single sample
single_sample = np.reshape(z, (1, -1))</code>

-1의 제한 사항

-1은 형태 변경 시 유연성을 제공하지만 두 치수를 모두 알 수 없음으로 지정하는 데 사용할 수 없습니다. 그렇게 시도하면 ValueError가 발생합니다.

<code class="python"># Attempting to set both dimensions as -1
invalid_reshape = z.reshape(-1, -1)

# ValueError: can only specify one unknown dimension</code>
알 수 없는 크기의 배열을 재구성하여 무결성을 유지하면서 데이터를 효과적으로 조작하려면 NumPy 재구성에서 -1의 역할을 이해하는 것이 중요합니다.

위 내용은 NumPy의 Reshape 기능에서 -1의 중요성은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.