반응형
import numpy as np
'''
---------------------------------------------------------------------
1. 모양확인 (numpy.ndarray.shape)
- 1차원부터 차례대로 개수를 확인
- 공통된 부분까지만 출력된다.
---------------------------------------------------------------------
'''
x=np.array([[[1,4],[5,6]],[[1,2],[7,8]],[[4,1],[66,4]]])
print(x.shape) # (3,2,2)
x=np.array([[[1,4],[5,6]],[[1,2],[7,8]],[[4,1],[66,4]],[2,7]])
print(x.shape) # (4,2)
'''
---------------------------------------------------------------------
2. 모양바꾸기 : a*b행렬을 c*d(a*b==c*d)로 바꾼다 (numpy.ndarray.reshape)
<<변환전>>
[[1 2 3]
[5 6 7]]
<<변환후>>
[[1 2]
[3 5]
[6 7]]
---------------------------------------------------------------------
'''
x=np.array([[1,2,3],[5,6,7]])
x=x.reshape(3,2) => -1을 넣으면 해당 위치에 알맞은 숫자가 자동으로 들어감
ex) (-1,2)를 넣으면 자동으로 -1에 3이 들어감
print(x)
'''
---------------------------------------------------------------------
3. 배열합치기 (numpy.concatenate)
- axis=0 : y축으로 합치기 (열개수가 같은 두 리스트 위아래로 붙이기)
- axis=1 : x축으로 합치기 (행개수가 같은 두 리스트 좌우로 붙이기)
---------------------------------------------------------------------
'''
A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])
cY=np.concatenate((A,B),axis=0) #합치고자 하는 list들은 다시한번 괄호로 묶어줘야함
print(cY)
'''
[[1 2]
[3 4]
[5 6]
[7 8]]
'''
cX=np.concatenate((B,A),axis=1)
print(cX)
'''
[[1 2 5 6]
[3 4 7 8]]
'''
'''
---------------------------------------------------------------------
4. 배열나누기 (numpy.split)
(1) 축
- axis=0 : y축으로 나누기 (위아래로 나누기)
- axis=1 : x축으로 나누기 (좌우로 나누기)
(2) 나누는 방법
- np.split(A,n,axis=m) : A리스트를 m축을 기준으로 n개로 똑같이 나눔(n으로 나눠떨어져야함)
- np.split(A,[a,b],axis=m) : A리스트를 m축을 기준으로 a,b인덱스로 나눔 (len([a,b])+1개로 나뉨)
이때 a,b의 리스트속 값의 인덱스-1에 위치
ex) [5,6,8,2,3]의 경우=> [ (0) 5, (1) 6, (2) 8, (3) 2, (4) 3 (5)]
---------------------------------------------------------------------
'''
A = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12],[6,5,3,2]])
print(A)
print("--------2로나눔(y축)-------")
splitY=np.split(A,2,axis=0)
for i in range(len(splitY)):
print(splitY[i])
print("--------리스트로나눔(y축)-------")
splitY=np.split(A,[0,3],axis=0)
for i in range(len(splitY)):
print(splitY[i])
print("--------2로나눔(x축)-------")
splitX=np.split(A,2,axis=1)
for i in range(len(splitX)):
print(splitX[i])
print("--------리스트로나눔(x축)-------")
splitX=np.split(A,[1,3],axis=1)
for i in range(len(splitX)):
print(splitX[i])
<<아웃풋값>>
[[ 1 2 3 4]
[ 5 6 7 8]
[ 9 10 11 12]
[ 6 5 3 2]]
--------2로나눔(y축)-------
[[1 2 3 4]
[5 6 7 8]]
[[ 9 10 11 12]
[ 6 5 3 2]]
--------리스트로나눔(y축)-------
[]
[[ 1 2 3 4]
[ 5 6 7 8]
[ 9 10 11 12]]
[[6 5 3 2]]
--------2로나눔(x축)-------
[[ 1 2]
[ 5 6]
[ 9 10]
[ 6 5]]
[[ 3 4]
[ 7 8]
[11 12]
[ 3 2]]
--------리스트로나눔(x축)-------
[[1]
[5]
[9]
[6]]
[[ 2 3 4]
[ 6 7 8]
[10 11 12]
[ 5 3 2]]
[]
'''
---------------------------------------------------------------------
5. 차원늘리기
(1) 축 (axis=n)
- n차원을 늘린다 (0차원부터 시작, 맨끝은 -1)
- n을하면 array.shape에 n 인덱스에 1을 추가하는것과 같은 효과
---------------------------------------------------------------------
'''
print(X_test.shape) #(4, 28, 28)
X_test = np.expand_dims(X_test, axis=-1)
print(X_test.shape) #(4, 28, 28, 1)
'''
---------------------------------------------------------------------
6. 각각의 요소들의 평균을 다음과같이 구할 수 있다.
---------------------------------------------------------------------
'''
a=np.array([[1,2],[3,5]])
b=(a[:,0]+a[:,1])/2
print(b)
a=np.array([[[1,2,3],[4,5,6]],
[[5,7,8],[6,4,2]],
])
b=(a[:,:,0]+a[:,:,1]+a[:,:,2])/3
print(b)
[1.5 4. ]
[[2. 5. ]
[6.66666667 4. ]]
반응형