total = 0
count = 0
while True:
num = input()
if num == "":
break
else:
try:
total += int(num)
count += 1
except ValueError:
#Value error 일 때도 count += 1이 실행됨..
# => count를 total보다 위에 써서 count 가 먼저 실행되고 total이 실행됨
# 그 시점에서 except가 걸리기 때문에 count는 올라가고 total은 실행되지 않음!
print("숫자를 입력해주세요")
print("average: ", total/count)
print(total, count)
a = np.arange(5)
b = np.array([0,1,2,3,4])
>>>[0 1 2 3 4]
>>>[0 1 2 3 4]
문자열이 하나만 들어가도 나머지 자료형이 다 문자열로 바뀐다. 그 이유는 문자를 모두 숫자로 바꿀 순 없지만 숫자는 모두 문자로 바꿀 수 있기 때문이다.
A = np.arange(10).reshape(2, 5)
# 길이 10의 1차원 행렬을 2X5 2차원 행렬로 바꿈.
print("행렬의 모양:", A.shape)
print("행렬의 축 개수:", A.ndim)
print("행렬 내 원소의 개수:", A.size)
>>> 행렬의 모양: (2, 5)
>>> 행렬의 축 개수: 2
>>> 행렬 내 원소의 개수: 10
np.eye(3)
>>> array([[1., 0., 0.],
[0., 1., 0.],
[0., 0., 1.]])
np.zeros([2,3])
>>> array([[0., 0., 0.],
[0., 0., 0.]])
np.ones([3,3])
>>> array([[1., 1., 1.],
[1., 1., 1.],
[1., 1., 1.]])
브로드캐스트
ndarray와 상수, 또는 서로 크기가 다른 ndarray끼리 산술연산이 가능한 기능
list 연산과의 차이
# list 연산
print([1,2]+[3,4])
print([1,2]+3)
>>> [1,2,3,4]
>>> error
# Numpy 연산
print(np.array([1,2])+np.array([3,4]))
print(np.array([1,2])+3)
>>> [4 6]
>>> [4 5]
A = np.arange(24).reshape(4,6)
print("A:", A)
print("A의 전치행렬:", A.T)
print("A의 전치행렬의 shape:", A.T.shape)
>>> A: [[ 0 1 2 3 4 5]
[ 6 7 8 9 10 11]
[12 13 14 15 16 17]
[18 19 20 21 22 23]]
>>> A의 전치행렬: [[ 0 6 12 18]
[ 1 7 13 19]
[ 2 8 14 20]
[ 3 9 15 21]
[ 4 10 16 22]
[ 5 11 17 23]]
>>> A의 전치행렬의 shape: (6, 4)
3차원 이해 안돼서 일단 넘김
3. NumPy로 기본 통계 데이터 계산해 보기
1. Series
%d는 %와 d 사이에 0과 숫자 개수를 넣어주면 자릿수에 맞춰서 앞에 0이 들어감. 예를 들어 %03d로 지정하면 1은 '001', 35는 '035'가 된다. { }를 사용할 때는 인덱스나 이름 뒤에 :(콜론)를 붙이고 03d처럼 0과 숫자 개수를 지정하면 된다.
'%03d' % 1
>>> '001'
'{0:03d}'.format(35)
>>> '035'
5일만에(코딩 공부만으론 4일) 이렇게 내용이 어려워질 줄은 몰랐다. 클래스를 아직 배우지 않았는데 언급돼서 당황했다. 그래도 항상 검색만 하면서 사용했던 것들을 다시 한 번 정리할 수 있어 좋았다. 3차원 배열에서 전치행렬이 잘 이해가 안되어 일단 넘겼으니까 다음에 공부할 때 좀 더 면밀히 살펴보는 것이 좋을 듯 하다.