Valueerror: 예상되는 2d 배열, 대신 1d 배열이 있음

Fariba Laiq 2023년6월21일
  1. Python의 Numpy 배열
  2. Python에서 Numpy 배열 만들기
  3. Python에서 ValueError 예상 2D 배열, 대신 1D 배열의 원인
  4. Python에서 ValueError: 예상 2D 배열, 대신 1D 배열 수정
Valueerror: 예상되는 2d 배열, 대신 1d 배열이 있음

아시다시피, 모든 프로그래밍 언어는 많은 오류에 직면합니다. 일부는 런타임에, 일부는 컴파일 시에 발생합니다. Python은 numpy 라이브러리를 사용할 때 때때로 배열 오류가 발생합니다.

numpy에서 2차원 배열 대신 1차원 배열을 전달하면 ValueError: Expected 2D array, got 1D array instead 오류가 발생합니다.

Python의 Numpy 배열

Numpy는 배열 및 수학 연산을 다루는 오픈 소스 라이브러리입니다. Python에는 배열의 목적을 제공하는 목록이 있지만 numpy 제작자는 목록보다 50x 빠른 배열을 증명한다고 주장합니다.

numpy 배열을 사용하는 핵심 목적 중 하나입니다.

Python에서 Numpy 배열 만들기

numpy 배열의 구문은 간단합니다. numpy 라이브러리를 프로그램으로 가져와 그에 따라 사용해야 합니다.

# Python 3.x
import numpy as np

# creating a numpy array
array1 = np.array([2, 4, 6])
print(array1)

출력:

#Python 3.x
[2 4 6]

Python에서 ValueError 예상 2D 배열, 대신 1D 배열의 원인

이 오류는 함수에서 1차원 배열을 전달할 때 발생합니다. 그러나 함수는 2차원 배열이 필요하므로 2D 배열을 제공하는 대신 단일 차원의 배열을 전달했습니다.

주로 predict() 메서드에서 기계 학습 알고리즘을 사용하여 발생합니다.

이제 이 시나리오를 살펴보겠습니다.

# Python 3.x
import numpy as np
from sklearn import svm

X = np.array([[2, 1], [4, 5], [2.6, 3.5], [6, 6], [0.8, 1], [7, 10]])
y = [1, 0, 1, 0, 1, 0]
classifier = svm.SVC(kernel="linear", C=1.0)
classifier.fit(X, y)
print(classifier.predict([0.7, 1.10]))

출력:

#Python 3.x
ValueError: Expected 2D array, got 1D array instead:
array=[0.7 1.1].
Reshape your data either using array.reshape(-1, 1) if your data has a single feature or array.reshape(1, -1) if it contains a single sample.

Python에서 ValueError: 예상 2D 배열, 대신 1D 배열 수정

데이터에 이중 대괄호 사용

아래에서는 이전 예제의 오류를 해결했습니다. 오류를 수정하는 가장 간단한 방법은 차원 배열을 2차원 배열로 변환하는 것입니다.

predict() 메서드에 전달할 때 [0.7,1.10]을 다른 대괄호로 묶어 2D 배열로 변환할 수 있습니다.

예제 코드:

# Python 3.x
import numpy as np
from sklearn import svm

X = np.array([[2, 1], [4, 5], [2.6, 3.5], [6, 6], [0.8, 1], [7, 10]])
y = [1, 0, 1, 0, 1, 0]
classifier = svm.SVC(kernel="linear", C=1.0)
classifier.fit(X, y)
print(classifier.predict([[0.7, 1.10]]))

출력:

#Python 3.x
[1]

reshape()을 사용하여 배열 모양 변경

1D 배열을 2D로 변환하는 또 다른 방법은 reshape() 메서드를 사용하여 배열을 재구성하는 것입니다. reshape() 메서드를 사용하여 Python에서 배열의 형태를 변경할 수 있습니다.

각 차원의 요소 수는 배열의 모양을 결정합니다. 모양 변경을 사용하여 배열 차원을 추가하거나 제거할 수 있습니다.

다음 코드에서 reshape() 메서드를 사용하기 전과 후의 numpy 배열의 크기를 볼 수 있습니다.

예제 코드:

# Python 3.x
import numpy as np
from sklearn import svm

X = np.array([[2, 1], [4, 5], [2.6, 3.5], [6, 6], [0.8, 1], [7, 10]])
y = [1, 0, 1, 0, 1, 0]
classifier = svm.SVC(kernel="linear", C=1.0)
classifier.fit(X, y)
test = np.array([0.7, 1.10])
print("Dimension before:", test.ndim)
test = test.reshape(1, -1)
print("Dimension now:", test.ndim)
print("Classifier Result:", classifier.predict(test))

출력:

#Python 3.x
Dimension before: 1
Dimension now: 2
Classifier Result: [1]
작가: Fariba Laiq
Fariba Laiq avatar Fariba Laiq avatar

I am Fariba Laiq from Pakistan. An android app developer, technical content writer, and coding instructor. Writing has always been one of my passions. I love to learn, implement and convey my knowledge to others.

LinkedIn

관련 문장 - Python Error