Python

[Python] 넘파이(numpy)_5. 정렬(sort), 파일 읽기/쓰기(file IO), 행렬 열/행 값 추가,삭제 (c_r_Array, insert, delete)

걍작 2022. 4. 13. 03:08

#정리

#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))) #짝수 인덱스 값 삭제 후 반환