반응형
python으로 하는 데이터 분석에도 관심이 생겨서 데이터 분석 입문인 Numpy를 공부해 보았다.
#원소에 10씩 곱하기
array = np.random.randint(1,10, size=4).reshape(2,2)
result_array = array*10
print(result_array)
array1 =np.arange(4).reshape(2,2)
#배열 덧셈
print(array1)
array2 = np.arange(2)
array3 = array1+ array2
print(array3)
array1 = np.arange(0,8).reshape(2,4)
array2 = np.arange(0,8).reshape(2,4)
#배열 합치기
array3 = np.concatenate([array1,array2],axis=0)
print(array3)
array4 = np.arange(0,4).reshape(4,1)
#배열 덧셈
print(array3+array4)
#배열만들
array1 = np.arange(16).reshape(4,4)
#배열중 원소가 10보다 작은 것은 TRUE 나머지는 FALSE생성
array2 = array1 < 10
print(array2)
#TRUE인 친구들만 100 대
array1[array2]= 100
print(array1)
#배열 생성하기
import numpy as np
array = np.array([1,2,3])
print(array.size)
print(array.dtype)
print(array[2])
#구조에 맞게 배열 생성하기
array1 = np.arange(4)
array2 = np.zeros((4,4),dtype=float)
print(array2)
print(array1)
array3 = np.ones((3,3),dtype=str)
print(array3)
array4 = np.random.randint(0,10,(3,3))
print(array4)
array5 = np.random.normal(0,1,(3,3))
print(array5)
array1 = np.array([1,2,3])
array2 = np.array([4,5,6])
array3 = np.concatenate([array1,array2])
print(array3)
#배열 이어붙이
import numpy as np
array1 =np.arange(4).reshape(1,4)
array2 = np.arange(8).reshape(2,4)
print(array1)
print(array2)
array3 = np.concatenate( [array1,array2] ,axis=0)
print(array3)
#데이터 분석에 자주쓰는 것
array = np.arange(16).reshape(4,4)
#최대
print(np.max(array))
#최소
print(np.min(array))
#합
print(np.sum(array))
#평균값
print(np.mean(array))
#파일 저장 그리고 로드
array = np.arange(0,10)
np.save('save.npy',array)
result = np.load('save.npy')
print(result)
result = np.load('save.npy')
print(result)
#배열 정렬
array = np.array([5,9,10,3,1])
array.sort()
print(array)
print("----------------")
#역순 정렬
array = np.array([5,9,10,3,1])
array.sort()
print(array[::-1])
print("----------------")
array = np.array([[5,9,10,3,1],[8,3,4,2,5]])
print(array)
#axis로 정렬
print("----------------")
array.sort(axis=0)
print(array)
#균일한 간격으로 데이터 생성
array = np.linspace(0,10,5)
print(array)
#실행마다 동일
np.random.seed(7)
print(np.random.randint(0,10,(2,3)))
#배열 복사
array1 = np.arange(0,10)
array2 = array1.copy()
print(array2)
#중복원소 제거
array = np.array([1,1,2,3,3,3,1])
print(np.unique(array))
이렇게 간단하게 실습을 해봤는데 이해가 안가는 부분은 axis였다.
공부를 해본 결과 나만 이해하기 쉽게 일단 나타내자면
axis는 축을 의미하는 느낌이고.
2차원일 때는
axis =0 은 행
axis =1은 열이다.
하지만 3차원 4차원으로 넘어갈수록
axis=0은 차원이되고
마지막으로 axis = n-1
axis = n은 마찬가지로, 행 열이된다.
이를 이해하기 쉬운 실습이 하나가 있는데 같이 알아보면 좋을 것 같다.
z = np.arange(36).reshape(3,4,3)
print(z)
print(np.sum(z,axis=0).shape)
print(np.sum(z,axis=0))
#결과
[[[ 0 1 2]
[ 3 4 5]
[ 6 7 8]
[ 9 10 11]]
[[12 13 14]
[15 16 17]
[18 19 20]
[21 22 23]]
[[24 25 26]
[27 28 29]
[30 31 32]
[33 34 35]]]
(4, 3)
[[36 39 42]
[45 48 51]
[54 57 60]
[63 66 69]]
가 나오는 것을 볼수있는데 0+12+24로 36이 나온 것처럼 각 차원의 원소를 sum한 것이보인다.
z = np.arange(36).reshape(3,4,3)
print(z)
print(np.sum(z,axis=1).shape)
print(np.sum(z,axis=1))
#결과
[[[ 0 1 2]
[ 3 4 5]
[ 6 7 8]
[ 9 10 11]]
[[12 13 14]
[15 16 17]
[18 19 20]
[21 22 23]]
[[24 25 26]
[27 28 29]
[30 31 32]
[33 34 35]]]
(3, 3)
[[ 18 22 26]
[ 66 70 74]
[114 118 122]]
이것을 보면 0+3+6+9 =18 가 해서 행을 기준으로 sum이 된것을 볼 수 있다.
1을했을땐 열을기준으로 sum을 하는것이 보인다.
이제 막 입문을 시작했고, 다양한 개발영역에 도전해볼 예정이다.
반응형
'Python > 데이터분석' 카테고리의 다른 글
태태코딩 - pandas 정리 (0) | 2025.04.20 |
---|