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를 사용할 수 없습니다"라고 말했을 것입니다. 하지만 파이썬은 병사하는 것이 최선이고, 정의되지 않은 일을하고, 실패하고, 도움이되지 않는 오류를 반환합니다. 우리가 이것에 대해 논의해야한다는 사실은 내가 파이썬이나 그것의 덕 타이핑 철학을 좋아하지 않는 이유 중 하나입니다.
'programing tip' 카테고리의 다른 글
한 양식에서 다른 양식으로 값 보내기 (0) | 2020.10.30 |
---|---|
Android에서 assert를 사용하는 방법은 무엇입니까? (0) | 2020.10.30 |
브레이크 (루프 / 스위치)에 응답하는 내부 구조에서 외부 루프를 끊는 방법 (0) | 2020.10.29 |
맵을 구조체로 변환 (0) | 2020.10.29 |
Angular + Material-데이터 소스를 새로 고치는 방법 (매트 테이블) (0) | 2020.10.29 |