Valueerror: 예상되는 2d 배열, 대신 1d 배열이 있음
- Python의 Numpy 배열
- Python에서 Numpy 배열 만들기
-
Python에서
ValueError 예상 2D 배열, 대신 1D 배열
의 원인 -
Python에서
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]
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
- AttributeError 수정: Python에서 'generator' 객체에 'next' 속성이 없습니다.
- AttributeError 해결: 'list' 객체 속성 'append'는 읽기 전용입니다.
- AttributeError 해결: Python에서 'Nonetype' 객체에 'Group' 속성이 없습니다.
- AttributeError: 'Dict' 객체에 Python의 'Append' 속성이 없습니다.
- AttributeError: 'NoneType' 객체에 Python의 'Text' 속성이 없습니다.
- AttributeError: Int 객체에 속성이 없습니다.