[Python] 넘파이(numpy)_5. 정렬(sort), 파일 읽기/쓰기(file IO), 행렬 열/행 값 추가,삭제 (c_r_Array, insert, delete)
#정리
#18sort - 정렬#print("----sort : 1차원 배열-----")
- 순정렬 후 역정렬 처리를 하게된다.
- print("sort1:",np.sort(ranSus1)) #순정렬
- print("sort1:",np.sort(ranSus1)[::-1]) #역정렬
#print("----sort : 2차원 배열-----")
- sort_su = np.sort(ranSus) #순정렬 (기본이 axis = 1)
- sort_su = np.sort(ranSus,axis=1) #각 행마다 순정렬
- sort_su = np.sort(ranSus,axis=1)[::-1] #각 행의 데이터 순정렬 후, 행을 역정렬
#print("----sort : 2차원 배열-----")
- np.sort(ranSus,axis=0) #각 열마다 순정렬
- sort_su = np.sort(ranSus,axis=0)[::-1] #각 열마다 역정렬
- print("sort2\n",sort_su)
#19file_IO - file_open 을 numpy에서 다루는 방법
<save>
#print("---np.save('파일명',입력내용) ----")
- np.save('np19wfile',arr) #file saved in binary type >> filename.npy
#print("---np.load('파일명.npy')----")
- print(np.load('np19wfile.npy')) #return ndarray type : ndarray 형태로 반환해주므로, 사용이 편리하다.<savez>
#print("---np.savez('파일명',x=dataArr,y=columnArr) ----")
- np.savez('np19wzfile',x=dataArr,y=columnArr) #file saved in binary type >> filename.npz
#print("---np.load('파일명.npz')----")
- print(np.load('np19wzfile.npz')) #return NpFile type : 객체처럼 정보가 반환된다.
- print(np.load('np19wzfile.npz')["x"]) #return ndarray type : dataArr
- print(np.load('np19wzfile.npz')["y"]) #return ndarray type : dataCol<savetxt>
#print("---np.savetxt('파일명.txt',입력내용) ----")
- np.savetxt('np19wtxtfile.txt',dataArr)
#print("---np.loadtxt('파일명.txt') ----")
- print(np.loadtxt('np19wtxtfile.txt')) #실수 형태로 반환된다.
<pickle>
#print("---pickle----") : 바이너리파일로 저장하는 또 다른 예더보기print("---pickle----") #바이너리파일로 저장하는 또 다른 예 import pickle names = ['kim','lee','park','홍길동'] with open('np19pickle.bin','wb') as f: #wb:write binary pickle.dump(names,f) f.close() with open('np19pickle.bin','rb') as f: print(pickle.load(f)) f.close()
#20c_r_array - 특정배열 에 열 데이터 추가, 행 데이터 추가
#print("-------np.c_[원본 배열, 추가할 열 배열]--------")
- c : column
- print(np.c_[arr,col_sus])
- print(np.c_[arr,np.array([111,222,333])])
- print(arr[:,0]) #각 행의 0번 인덱스 추출 (0번 열 추출)
- print(arr[:,1]) #각 행의 1번 인덱스 추출 (1번 열 추출)
- print(np.c_[arr,arr[:,[0]]]) #0번 열을 가장 끝 열에 추가
#print("-------np.r_[원본 배열, 추가할 행 배열]--------")
- r : row
- print(np.r_[arr,[row_sus]])
- print(np.r_[arr,[np.array([111,222,333,444])]])
- print(arr[0]) #0번 행 추출
- print(arr[1]) #1번 행 추출
- print(np.r_[arr,[arr[0]]]) #0번 행을 가장 끝 행에 추가
#print("---2차원 배열 만들기----")
- print(arr[:,[0]]) #0번 열로만 구성된 2차원 배열
- print(arr[:,[1]]) #1번 열로만 구성된 2차원 배열
- print(np.c_[col_sus]) #1차월 배열을 2차원 배열의 각 행에 할당
- print(np.reshape(col_sus,(3,1))) #1차월 배열을 2차원 배열로 변형
#print("---insert, axis=0 : 2차원 배열에 행 삽입하기----")
- print(np.insert(arr,len(arr),[111,222,333,444],axis=0))
- print(np.insert(arr,0,[111,222,333,444],axis=0))
#print("---insert, axis=1 : 2차원 배열에 행 삽입하기----")
- print(np.insert(arr,len(arr[0]),[111,222,333],axis=1))
- print(np.insert(arr,0,[111,222,333],axis=1))
#print("---delete, axis=0 : 2차원 배열에 행 삭제하기----")
- print(np.delete(arr,len(arr)-1,axis=0))
- print(np.delete(arr,0,axis=0))
#print("---delete, axis=1 : 2차원 배열에 행 삭제하기----")
- print(np.delete(arr,len(arr[0])-1,axis=1))
- print(np.delete(arr,0,axis=1))
#print("---insert: 1차원 배열에 행 삽입하기----")
- print(np.insert(arr,len(arr),[111]))
- print(np.insert(arr,3,[111,222,333,444]))
#print("---delete : 1차원 배열에 행 삭제하기----")
- print(np.delete(arr,(len(arr)-1)))
- print(np.delete(arr,(0)))
- print(np.delete(arr,(0,2,4,6,8))) #짝수 인덱스 값 삭제 후 반환
#18sort - 정렬
#print("----sort : 1차원 배열-----")
- 순정렬 후 역정렬 처리를 하게된다.
- print("sort1:",np.sort(ranSus1)) #순정렬
- print("sort1:",np.sort(ranSus1)[::-1]) #역정렬
#print("----sort : 2차원 배열-----")
- sort_su = np.sort(ranSus) #순정렬 (기본이 axis = 1)
- sort_su = np.sort(ranSus,axis=1) #각 행마다 순정렬
- sort_su = np.sort(ranSus,axis=1)[::-1] #각 행의 데이터 순정렬 후, 행을 역정렬
#print("----sort : 2차원 배열-----")
- np.sort(ranSus,axis=0) #각 열마다 순정렬
- sort_su = np.sort(ranSus,axis=0)[::-1] #각 열마다 역정렬
- print("sort2\n",sort_su)
--예문 코드 보기--
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import numpy as np
print("numpy version",np.__version__) #numpy version check
print("----sort : 1차원 배열-----")
ranSus1 = np.random.choice(5,5,replace=True)
ranSus2 = np.random.choice(10,10,replace=True)
#순정렬 후 역정렬 처리를 하게된다.
print("ranSus1:",ranSus1)
print("sort1:",np.sort(ranSus1)) #순정렬
print("sort1:",np.sort(ranSus1)[::-1]) #역정렬
print("---------------")
print("ranSus2:",ranSus2)
print("sort2:",np.sort(ranSus2)) #순정렬
print("sort2:",np.sort(ranSus2)[::-1]) #역정렬
print("---------------")
print("----sort : 2차원 배열-----")
ranSus = np.random.choice(20,12,replace=True).reshape(3,4)
print("ranSus1\n",ranSus)
print("---------------")
sort_su = np.sort(ranSus)
print("sort1\n",sort_su) #순정렬 (기본이 axis = 1)
sort_su = np.sort(ranSus,axis=1)
print("sort1\n",sort_su) #각 행마다 순정렬
sort_su = np.sort(ranSus,axis=1)[::-1]
print("sort2\n",sort_su) #각 행의 데이터 순정렬 후, 행을 역정렬
sort_su = np.sort(sort_su,axis=0)
print("sort3\n",sort_su) #각 행 데이터 순정렬 후, 각 열별로 순정렬
print("----sort : 2차원 배열-----")
ranSus = np.random.choice(20,12,replace=True).reshape(3,4)
print("ranSus1\n",ranSus)
print("---------------")
sort_su = np.sort(ranSus,axis=0)
print("sort1\n",sort_su) #각 열마다 순정렬
sort_su = np.sort(ranSus,axis=0)[::-1]
print("sort2\n",sort_su) #각 열마다 역정렬
#19file_IO - file_open 을 numpy에서 다루는 방법
<save>
#print("---np.save('파일명',입력내용) ----")
- np.save('np19wfile',arr) #file saved in binary type >> filename.npy
#print("---np.load('파일명.npy')----")
- print(np.load('np19wfile.npy')) #return ndarray type : ndarray 형태로 반환해주므로, 사용이 편리하다.
<savez>
#print("---np.savez('파일명',x=dataArr,y=columnArr) ----")
- np.savez('np19wzfile',x=dataArr,y=columnArr) #file saved in binary type >> filename.npz
#print("---np.load('파일명.npz')----")
- print(np.load('np19wzfile.npz')) #return NpFile type : 객체처럼 정보가 반환된다.
- print(np.load('np19wzfile.npz')["x"]) #return ndarray type : dataArr
- print(np.load('np19wzfile.npz')["y"]) #return ndarray type : dataCol
<savetxt>
#print("---np.savetxt('파일명.txt',입력내용) ----")
- np.savetxt('np19wtxtfile.txt',dataArr)
#print("---np.loadtxt('파일명.txt') ----")
- print(np.loadtxt('np19wtxtfile.txt')) #실수 형태로 반환된다.
<pickle>
#print("---pickle----") : 바이너리파일로 저장하는 또 다른 예
print("---pickle----")
#바이너리파일로 저장하는 또 다른 예
import pickle
names = ['kim','lee','park','홍길동']
with open('np19pickle.bin','wb') as f: #wb:write binary
pickle.dump(names,f)
f.close()
with open('np19pickle.bin','rb') as f:
print(pickle.load(f))
f.close()
--예문 코드 보기--
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import numpy as np
print("numpy version",np.__version__) #numpy version check
print("---------------")
arr = np.arange(1,12+1).reshape(3,4)
print(arr)
print("---np.save('파일명',입력내용) ----")
np.save('np19wfile',arr) #file saved in binary type >> filename.npy
print("---np.load('파일명.npy')----")
#ndarray 형태로 반환해주므로, 사용이 편리하다.
print(np.load('np19wfile.npy')) #return ndarray type
print("---np.savez('파일명',x=dataArr,y=columnArr) ----")
dataArr = np.arange(1,12+1).reshape(3,4)
columnArr = np.arange(4)
print(dataArr, columnArr)
np.savez('np19wzfile',x=dataArr,y=columnArr) #file saved in binary type >> filename.npz
print("---np.load('파일명.npz')----")
#ndarray 형태로 반환해주므로, 사용이 편리하다.
print(np.load('np19wzfile.npz')) #return NpFile type
print(np.load('np19wzfile.npz')["x"]) #return ndarray type
print(np.load('np19wzfile.npz')["y"]) #return ndarray type
print("---np.savetxt('파일명.txt',입력내용) ----")
dataArr = np.arange(1,12+1).reshape(3,4)
print(dataArr)
np.savetxt('np19wtxtfile.txt',dataArr)
print("---np.loadtxt('파일명.txt') ----")
print(np.loadtxt('np19wtxtfile.txt')) #실수 형태로 반환된다.
print("---------------")
print("---pickle----")
#바이너리파일로 저장하는 또 다른 예
import pickle
names = ['kim','lee','park','홍길동']
with open('np19pickle.bin','wb') as f: #wb:write binary
pickle.dump(names,f)
f.close()
with open('np19pickle.bin','rb') as f:
print(pickle.load(f))
f.close()
#20c_r_array - 특정배열 에 열 데이터 추가, 행 데이터 추가
#print("-------np.c_[원본 배열, 추가할 열 배열]--------")
- c : column
- print(np.c_[arr,col_sus])
- print(np.c_[arr,np.array([111,222,333])])
- print(arr[:,0]) #각 행의 0번 인덱스 추출 (0번 열 추출)
- print(arr[:,1]) #각 행의 1번 인덱스 추출 (1번 열 추출)
- print(np.c_[arr,arr[:,[0]]]) #0번 열을 가장 끝 열에 추가
#print("-------np.r_[원본 배열, 추가할 행 배열]--------")
- r : row
- print(np.r_[arr,[row_sus]])
- print(np.r_[arr,[np.array([111,222,333,444])]])
- print(arr[0]) #0번 행 추출
- print(arr[1]) #1번 행 추출
- print(np.r_[arr,[arr[0]]]) #0번 행을 가장 끝 행에 추가
#print("---2차원 배열 만들기----")
- print(arr[:,[0]]) #0번 열로만 구성된 2차원 배열
- print(arr[:,[1]]) #1번 열로만 구성된 2차원 배열
- print(np.c_[col_sus]) #1차월 배열을 2차원 배열의 각 행에 할당
- print(np.reshape(col_sus,(3,1))) #1차월 배열을 2차원 배열로 변형
#print("---insert, axis=0 : 2차원 배열에 행 삽입하기----")
- print(np.insert(arr,len(arr),[111,222,333,444],axis=0))
- print(np.insert(arr,0,[111,222,333,444],axis=0))
#print("---insert, axis=1 : 2차원 배열에 행 삽입하기----")
- print(np.insert(arr,len(arr[0]),[111,222,333],axis=1))
- print(np.insert(arr,0,[111,222,333],axis=1))
#print("---delete, axis=0 : 2차원 배열에 행 삭제하기----")
- print(np.delete(arr,len(arr)-1,axis=0))
- print(np.delete(arr,0,axis=0))
#print("---delete, axis=1 : 2차원 배열에 행 삭제하기----")
- print(np.delete(arr,len(arr[0])-1,axis=1))
- print(np.delete(arr,0,axis=1))
#print("---insert: 1차원 배열에 행 삽입하기----")
- print(np.insert(arr,len(arr),[111]))
- print(np.insert(arr,3,[111,222,333,444]))
#print("---delete : 1차원 배열에 행 삭제하기----")
- print(np.delete(arr,(len(arr)-1)))
- print(np.delete(arr,(0)))
- print(np.delete(arr,(0,2,4,6,8))) #짝수 인덱스 값 삭제 후 반환
--예문 코드 보기--
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import numpy as np
print("numpy version",np.__version__) #numpy version check
print("---------------")
arr = np.arange(1,12+1).reshape(3,4)
print(arr)
col_sus = np.arange(91,93+1)
print(col_sus)
row_sus = np.arange(81,84+1)
print(row_sus)
print("-------np.c_[원본 배열, 추가할 열 배열]--------")
# c : column
print(np.c_[arr,col_sus])
print(np.c_[arr,np.array([111,222,333])])
print(arr[:,0]) #각 행의 0번 인덱스 추출 (0번 열 추출)
print(arr[:,1]) #각 행의 1번 인덱스 추출 (1번 열 추출)
print(np.c_[arr,arr[:,[0]]]) #0번 열을 가장 끝 열에 추가
print("-------np.r_[원본 배열, 추가할 행 배열]--------")
# r : row
print(np.r_[arr,[row_sus]])
print(np.r_[arr,[np.array([111,222,333,444])]])
print(arr[0]) #0번 행 추출
print(arr[1]) #1번 행 추출
print(np.r_[arr,[arr[0]]]) #0번 행을 가장 끝 행에 추가
print("---2차원 배열 만들기----")
print(arr[:,[0]]) #0번 열로만 구성된 2차원 배열
print(arr[:,[1]]) #1번 열로만 구성된 2차원 배열
print(np.c_[col_sus]) #1차월 배열을 2차원 배열의 각 행에 할당
print(np.reshape(col_sus,(3,1))) #1차월 배열을 2차원 배열로 변형
print("---insert, axis=0 : 2차원 배열에 행 삽입하기----")
arr = np.arange(1,12+1).reshape(3,4)
print(arr)
print(np.insert(arr,len(arr),[111,222,333,444],axis=0))
print(np.insert(arr,0,[111,222,333,444],axis=0))
print("---insert, axis=1 : 2차원 배열에 행 삽입하기----")
arr = np.arange(1,12+1).reshape(3,4)
print(arr)
print(np.insert(arr,len(arr[0]),[111,222,333],axis=1))
print(np.insert(arr,0,[111,222,333],axis=1))
print("---delete, axis=0 : 2차원 배열에 행 삭제하기----")
arr = np.arange(1,12+1).reshape(3,4)
print(arr)
print(np.delete(arr,len(arr)-1,axis=0))
print(np.delete(arr,0,axis=0))
print("---delete, axis=1 : 2차원 배열에 행 삭제하기----")
arr = np.arange(1,12+1).reshape(3,4)
print(arr)
print(np.delete(arr,len(arr[0])-1,axis=1))
print(np.delete(arr,0,axis=1))
print("---insert: 1차원 배열에 행 삽입하기----")
arr = np.arange(1,12+1)
print(arr)
print(np.insert(arr,len(arr),[111]))
print(np.insert(arr,len(arr),[111,222,333,444]))
print(np.insert(arr,0,[111]))
print(np.insert(arr,3,[111,222,333,444]))
print("---delete : 1차원 배열에 행 삭제하기----")
arr = np.arange(1,12+1)
print(arr)
print(np.delete(arr,(len(arr)-1)))
print(np.delete(arr,(0)))
print(np.delete(arr,(0,2,4,6,8))) #짝수 인덱스 값 삭제 후 반환