Python/데이터분석

태태개발일지(Numpy)

태태코 2023. 12. 11. 11:13
반응형

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+2436이 나온 것처럼 각 차원의 원소를 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