programing tip

TypeError : 데이터를 지수 적으로 맞추려고 시도하는 동안 길이 1 배열 만 Python 스칼라로 변환 될 수 있습니다.

itbloger 2020. 10. 29. 07:54
반응형

TypeError : 데이터를 지수 적으로 맞추려고 시도하는 동안 길이 1 배열 만 Python 스칼라로 변환 될 수 있습니다.


f=np.loadtxt('Single Small Angle 1.txt',unpack=True,skiprows=2)
g=np.loadtxt('Single Small Angle 5.txt',unpack=True,skiprows=2)

x = f-g[:,:11944]
t=range(len(x))
m=math.log10(abs(x))

np.polyfit(t,m)

plt.plot(t,abs(x))
plt.show()

내 문제를 해결하는 방법을 잘 모르겠습니다. 계속해서 말합니다.

m=math.log10(abs(x))
TypeError: only length-1 arrays can be converted to Python scalars

numpy가 아닌 함수 는 numpy 배열과 비슷 math.abs()하거나 math.log10()작동 하지 않습니다. 오류를 일으키는 줄을 다음과 같이 바꾸십시오.

m = np.log10(np.abs(x))

그 외에는 np.polyfit()매개 변수가 없기 때문에 호출이 작동하지 않습니다 (그리고 나중에 사용하기 위해 결과를 할당하지 않음).


다음은 numpy를 사용하여 Python2.7에서이 오류를 재현하는 또 다른 방법입니다.

import numpy as np
a = np.array([1,2,3])
b = np.array([4,5,6])
c = np.concatenate(a,b)   #note the lack of tuple format for a and b
print(c) 

np.concatenate메서드는 오류를 생성합니다.

TypeError: only length-1 arrays can be converted to Python scalars

numpy.concatenate에 대한 문서를 읽으면 numpy 배열 객체의 튜플이 필요하다는 것을 알 수 있습니다. 따라서 변수를 괄호로 둘러싸고 수정했습니다.

import numpy as np
a = np.array([1,2,3])
b = np.array([4,5,6])
c = np.concatenate((a,b))  #surround a and b with parens, packaging them as a tuple
print(c) 

그런 다음 인쇄합니다.

[1 2 3 4 5 6]

여기서 무슨 일이 일어나고 있습니까?

이 오류는 버블 업 구현의 경우입니다. 이는 파이썬의 덕 타이핑 철학으로 인해 발생합니다. 이것은 예기치 않은 변수 유형을 수신하고 실행을 시도하고 무언가를 시도하고 일부를 통과하고 토하고 교정 조치를 시도하고 실패한 다음 "당신은 할 수 있습니다." t 화요일에 동쪽에서 바람이 불 때 부분 공간 응답자를 재구성합니다. "

C ++ 또는 Java와 같은보다 현명한 언어에서는 "TypeB가 예상되는 곳에 TypeA를 사용할 수 없습니다"라고 말했을 것입니다. 하지만 파이썬은 병사하는 것이 최선이고, 정의되지 않은 일을하고, 실패하고, 도움이되지 않는 오류를 반환합니다. 우리가 이것에 대해 논의해야한다는 사실은 내가 파이썬이나 그것의 덕 타이핑 철학을 좋아하지 않는 이유 중 하나입니다.

참고 URL : https://stackoverflow.com/questions/21687581/typeerror-only-length-1-arrays-can-be-converted-to-python-scalars-while-trying

반응형