2차원의 데이터를 처리할때는 판다스가 더 정신건강에 이롭다.
N차원 배열 객체
1차원
array: [1,2,3] shape:(3,)
2차원
array:[[][]] shape :(2,3)
ndarray내 데이터 값은 같은 타입만 들어가있어야 함.
axis축
1차원
행=0
2차원
열=0
행=1
3차원
높이=0
열=1
행=2
# ndarray 데이터값 타입
print(array1, array1.dtype)
list2 = [1,2,'ㅣㅑㄴㅅ'] #리스트는 서로 다른 데이터타입이 올 수 있다
array2 = np.array(list2)
print(array2, array2.dtype)
list3=[1,2,3.0]
array3 = np.array(list3)
print(array3, array3.dtype)
#[1 2 3] int64
#['1' '2' 'ㅣㅑㄴㅅ'] <U21
#[1. 2. 3.] float64
-1
이 들어가면 -1에 해당하는 axis는 가변적이고, 나머지 axis는 해당 숫자로 크기가 고정되도록 출력된다.reshape(-1,1)
, reshape(-1,)
형태로 많이 사용한다.array1 = np.arange(10)
reshape=array1.reshape(2,5)
print(reshape)
[[0 1 2 3 4]
[5 6 7 8 9]]
# -1이 들어가면 -1에 해당하는 axis는 가변적이고, 나머지 axis는 해당 숫자로 크기가 고정되도록 출력된다.
print(array1.reshape(-1,5))
[[0 1 2 3 4]
[5 6 7 8 9]]
print(array1.reshape(-1,2))
[[0 1]
[2 3]
[4 5]
[6 7]
[8 9]]
# 1차원 -> 2차원
print(array1.reshape(-1,1))
[[0]
[1]
[2]
[3]
[4]
[5]
[6]
[7]
[8]
[9]]
# 1차원으로 변환
print(array1.reshape(-1,))
[0 1 2 3 4 5 6 7 8 9]
arr[i]
arr[n:m]
arr[[n,m,i]]
, arr[[d,g],[s,a]]
array.filter()
와 같다.#단일값 추출
arr = np.arange(10)
arr2 = np.array([[1,2,3],[4,5,6],[7,8,9]])
print(arr[-1]) //9
print(arr[3]) //3
print(arr2[0,0]) //1
print(arr2[1,2]) // 6
# 슬라이싱
print(arr[0:3])
print(arr[2:])
print(arr[:])
print(arr[:7])
[0 1 2]
[2 3 4 5 6 7 8 9]
[0 1 2 3 4 5 6 7 8 9]
[0 1 2 3 4 5 6]
print(arr2[0:2,0:2])
[[1 2]
[4 5]]
print(arr2[:,:])
[[1 2 3]
[4 5 6]
[7 8 9]]
print(arr2[2:, 2:])
[[9]]
print(arr2[2:,0])
[7]
# 펜시 인덱싱
print(arr2[[0,1],2])
[3 6]
print(arr2[[0,1],:2])
[[1 2]
[4 5]]
print(arr2[[1,2],[2]])
[6 9]
print(arr2[[1,2]])
[[4 5 6]
[7 8 9]]
# 불린 인덱싱
print(arr[arr2%2==0])
[0 2 4 6 8]
print(arr2[arr>5])
[6 7 8 9]
booleanIndex = arr>5
print(arr2[booleanIndex])
[False False False False False False True True True True]
[6 7 8 9]
두개모두 기본적으로 오름차순으로 정렬한다.
내림차순 정렬을 하기 위해서는 np.sort()[::-1]
, arr.sort()[::-1]
형식으로 사용
2차원 이상에서 axis기반의 sort
arr2 = np.array([[3,5],[9,2]])
print(np.sort(arr2,axis=0))#열 기반으로 소팅[3,9]소팅, [5,2]소팅
[[3 2]
[9 5]]
print(np.sort(arr2, axis=1))
[[3 5]
[2 9]]
A=[1,2 A`=[1,3
3,4] 2,4]