스택큐힙리스트

파이썬 "IndexError: 인덱스 8은(는) 크기 8의 축 0을(를) 벗어나는 범위입니다." 본문

카테고리 없음

파이썬 "IndexError: 인덱스 8은(는) 크기 8의 축 0을(를) 벗어나는 범위입니다."

스택큐힙리스트 2024. 1. 9. 18:57
반응형

HTML의 p 태그를 한국어로 번역해보겠습니다.


import numpy as np
def prime_sieve(N):
nums = np.arange(2, N+2, 1)
mask = []
for n in nums:
mask.append(True)
for n in nums:
for i in np.arange(2*n-2, N, n):
mask[i] = False
return nums, np.array(mask)
numbers, mask = prime_sieve(8)
print(numbers)
print(mask)
[2 3 4 5 6 7 8 9]
[ True True False True False True False False]

나의 코드:


import numpy as np
def primes_list(N):
numbers, mask = prime_sieve(N)
primes = []
for n in numbers:
if mask[n] == 참:
primes.append(numbers[n])
return primes
print(primes_list(8))

그러나 이렇게 하면 오류가 발생합니다:

---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
<ipython-input-60-4ea4d2f36734> in <module>
----> 2 print(primes_list(8))
<ipython-input-59-a5080837c5c8> in primes_list(N)
6 primes = []
7 for n in numbers:
----> 8 if mask[n] == true:
9 primes.append(numbers[n])
10 return primes
IndexError: index 8 is out of bounds for axis 0 with size 8

답변 1

리스트 mask를 슬라이스하는 데 사용되는 n은 인덱스에 적합하지 않은 숫자 목록입니다 (마지막 인덱스가 N-1이지만 항상 N, N+1을 포함합니다).


또한, 두 번째 리스트 maskstr이 아닌 Bool을 포함하고 있으므로, mask[n] == 'true'의 비교는 항상 False를 반환합니다.


위의 사항을 염두에 두고, 당신의 primes_list는 다음과 같을 수 있습니다:


def primes_list(N):
numbers, mask = prime_sieve(N)
primes = []
for i, n in enumerate(numbers): # <<< enumerate를 추가했습니다
if mask[i]: # <<< 불필요한 비교를 제거했습니다
primes.append(n) # <<< n을 직접 추가했습니다
return primes

이는 다음과 같이 반환됩니다:


[2, 3, 5, 7]

해당되어야 하는 값입니다.

답변 2

주제: Python 'IndexError: index 8 is out of bounds for axis 0 with size 8' 에 대한 대처방법
SEO 염두에 두어 검색 엔진 최적화를 고려한 한국어 에세이입니다.
최근 프로그래밍 분야에서 파이썬 언어는 인기를 끌고 있습니다. 그러나 파이썬을 사용하는 동안 종종 IndexError: index 8 is out of bounds for axis 0 with size 8와 같은 오류 메시지를 마주할 수 있습니다. 이 오류 메시지는 종종 사용자에게 혼란을 주며, 파이썬 코드를 개발하는 동안 문제를 일으키는 원인이 됩니다. 이 글은 이 오류 메시지를 이해하고 해결하기 위한 방법을 설명합니다.
이 오류는 주로 리스트나 배열과 같은 시퀀스 형태의 데이터에 대해 인덱싱 작업을 수행할 때 발생합니다. 오류 메시지에서 index 8 is out of bounds for axis 0 with size 8라는 문구에서, index 8은 사용자가 접근하려는 요소의 인덱스를 나타내며, axis 0은 데이터의 축을 나타냅니다. with size 8은 데이터의 크기가 8임을 의미합니다. 단순히 말하면, 사용자가 범위를 벗어나는 인덱스에 접근하려고 한 것입니다.
이 오류를 해결하기 위해서는 몇 가지 방법이 있습니다. 첫째, 오류 메시지에서 언급한 인덱스 번호가 데이터의 크기를 넘어섰는지 확인해야 합니다. 인덱스는 0부터 시작하기 때문에 인덱스의 최대 크기는 크기보다 1 작아야 합니다. 예를 들어, 오류 메시지에서 인덱스 번호가 8인데 데이터 크기가 8이라면, 제대로된 인덱스 번호는 0부터 7까지입니다. 올바른 인덱스 범위 내에서 작업하도록 코드를 수정해야 합니다.
둘째, 코드 내에서 인덱스 번호를 설정하는 과정을 검토해야 합니다. 데이터를 저장하는 방식에 따라 인덱스 번호는 다를 수 있습니다. 예를 들어, 파이썬은 0부터 시작하는 인덱스를 사용하지만, 다른 언어나 라이브러리에서는 1부터 시작하거나 다른 규칙을 적용할 수 있습니다. 따라서 코드에서 인덱스 번호를 설정할 때 데이터의 구조와 규칙을 고려해야 합니다.
셋째, 데이터의 크기를 검토해야 합니다. 데이터의 크기는 코드가 실행될 때 동적으로 변경될 수 있으므로, 코드 내에서 데이터의 크기를 올바르게 추적해야 합니다. 데이터 범위를 벗어난 인덱스에 접근하기 전에 데이터의 크기를 다시 확인하고, 데이터의 크기를 초과하는 인덱스에 접근하지 않도록 조치해야 합니다.
이와 같은 방법들을 사용하여 IndexError: index 8 is out of bounds for axis 0 with size 8와 같은 파이썬 오류를 해결할 수 있습니다. 이 오류는 프로그래머들이 자주 마주치는 문제이며, 프로그램의 완성도와 정확성을 향상시키는데 기여할 수 있습니다. 또한, 코드를 작성하는 단계에서 이러한 오류를 예방하고 대처하기 위해 충분한 테스트를 수행하는 것이 좋습니다.
이 글에서는 프로그래머들이 파이썬에서 발생하는 IndexError: index 8 is out of bounds for axis 0 with size 8와 같은 오류를 해결하기 위한 방법을 설명했습니다. 프로그래밍 과정에서 이러한 오류는 불가피하지만, 이에 대한 이해와 대처 방법을 갖추면 오류를 빠르고 효과적으로 해결할 수 있습니다. 프로그래머들은 이러한 문제들에 대한 이해를 바탕으로 파이썬 코드를 개선하고, 보다 안정적이고 우수한 프로그램을 개발할 수 있습니다.

반응형
Comments