Numpy 배열 행 열 추가 및 삭제
# 배열에 행열 추가 삭제
import numpy as np
aa = np.eye(3)
print(aa, end='\n\n')
bb = np.c_[aa, aa[2]] # 열 추가 2번째 열을 하나 더 추가 후 출력
print(bb, end='\n\n')
cc = np.r_[aa, [aa[2]]] # 2번째 행 추가 후 출력
print(cc, end='\n\n')
a = np.array([1,2,3])
print(a, end='\n\n')
print(np.c_[a], end='\n\n')
print(a.reshape(3,1), end='\n\n')
# 출력 결과
[[1. 0. 0.]
[0. 1. 0.]
[0. 0. 1.]]
[[1. 0. 0. 0.]
[0. 1. 0. 0.]
[0. 0. 1. 1.]]
[[1. 0. 0.]
[0. 1. 0.]
[0. 0. 1.]
[0. 0. 1.]]
[1 2 3]
[[1]
[2]
[3]]
[[1]
[2]
[3]]
eye 함수는 이전에 포스팅하였습니다!
2020/05/31 - [python] - [Python] Numpy (2) - zeros, ones, full, eye, 난수
[Python] Numpy (2) - zeros, ones, full, eye, 난수
2020/05/28 - [python] - [python] Numpy [python] Numpy Numpy 란? C언어로 개발되었으며, 계산을 위한 라이브러리로서 다차원 배열을 처리하는데 필요한 기능을 제공합니다. Numpy 데이터 타입 # numpy : ndarra..
lightchan.tistory.com
eye 함수로 3 x 3 행렬을 생성 후,
.c_ 를 사용하면 열을 추가한다는 의미로,
위 소스코드에서는 aa 배열의 열에 2번째 열을 추가해주겠다는 의미입니다.
.r_ 를 사용하면 행을 추가해주겠다는 의미로, 위 소스코드에서는 2번째 행을 aa 행렬에 추가해주겠다는 의미입니다.
a = np.array([1,2,3])
print(a, end='\n\n')
#b = np.append(a,[4,5])
b = np.append(a, [4,5], axis = 0)
print(b, end='\n\n')
c = np.insert(a,0, [6,7], axis=0)
print(c, end='\n\n')
d = np.delete(a, 1) # 1열 삭제
d = np.delete(a,[1])
print(d, end='\n\n')
# 출력 결과
[1 2 3]
[1 2 3 4 5]
[6 7 1 2 3]
[1 3]
append 함수 : 리스트의 맨 마지막에 값을 추가해주는 함수이다.
위 소스에서 a라는 1차원 배열 리스트에 4와 5를 추가해주었습니다.
insert 함수 : 리스트에 요소를 추가해주는 함수로 0 번째 위치에 6과 7을 더해준다는 의미입니다.
delete 함수 : 1차원 배열 a의 1열을 삭제한다는 의미입니다.
aa = np.arange(1, 10).reshape(3,3) # 2차원 배열
print(aa, end='\n\n')
print(np.insert(aa, 1, 99), end='\n\n')
print(np.insert(aa,1, 99, axis=0), end='\n\n')
# 출력 결과
[[1 2 3]
[4 5 6]
[7 8 9]]
[ 1 99 2 3 4 5 6 7 8 9]
[[ 1 2 3]
[99 99 99]
[ 4 5 6]
[ 7 8 9]]
aa라는 변수에 1차원 배열 1부터 9까지 삽입 후 reshape 함수를 통해 2차원배열인 3x3로 변경해주었습니다.
그리고, insert 함수에 axis 옵션을 주지 않으면 1차원 배열로 1번째 위치의 값을 99로 변경하는 의미입니다.
그 다음 출력문에는 axis=0 으로 행을 의미하며 1행 전부의 값을 99로 변환하는 의미입니다.
delete문은 insert 함수와 반대로 생각하시면 됩니다.
print(aa, end='\n\n')
print(np.delete(aa, 1), end='\n\n') # 0행 1열 값을 지움
print(np.delete(aa, 1, axis = 0), end='\n\n') # 1행을 지움
print(np.delete(aa, 1, axis = 1), end='\n\n') # 1열을 지움
# 출력 결과
[[1 2 3]
[4 5 6]
[7 8 9]]
[1 3 4 5 6 7 8 9]
[[1 2 3]
[7 8 9]]
[[1 3]
[4 6]
[7 9]]
Numpy 내장 함수
ex = np.random.randn(5,4)
print(ex, end='\n\n')
print('1행의 합과 최대값')
print(np.sum(ex[0],))
print(np.max(ex[0],), end='\n\n')
print('2행의 합과 최대값')
print(np.sum(ex[1],))
print(np.max(ex[1],), end='\n\n')
print('3행의 합과 최대값')
print(np.sum(ex[2],))
print(np.max(ex[2],), end='\n\n')
c = np.zeros((6, 6))
print(c, end='\n\n')
num = 1
for i in range(len(c[0])):
for j in range(len(c[0])):
c[i][j] = num
num += 1
print('1~36 채우기')
print(c, end='\n\n')
print('2번째 행 전체 원소 출력')
print(c[1], end='\n\n')
print('5번째 열 전체 원소 출력')
print(c[:,4], end='\n\n')
print('부분 출력')
print(c[2:5,2:5], end='\n\n')
print('2-2번')
b = np.zeros((6,4))
c = np.random.randint(20, 100, 6)
for i in range(6):
for j in range(3):
b[i][0] = c[i]
b[i][j+1] = b[i][j]+1
print(b)
b[0] = 1000
b[5] = 6000
print(b)
print('3번')
ex1 = np.random.randn(4,5)
print(ex1, end='\n\n')
print('평균 : ',np.mean(ex1), end='\n\n')
print('합계 : ',np.sum(ex1), end='\n\n')
print('표준편차 : ',np.std(ex1), end='\n\n')
print('분산 : ',np.var(ex1), end='\n\n')
print('최대값 : ',np.max(ex1), end='\n\n')
print('최소값 : ',np.min(ex1), end='\n\n')
print('1사분위 : ',np.percentile(ex1,25), end='\n\n')
print('2사분위 : ',np.percentile(ex1,50), end='\n\n')
print('3사분위 : ',np.percentile(ex1,75), end='\n\n')
print('요소값누적합 : ',np.cumsum(ex1), end='\n\n')
# 출력 결과
[[-0.99017343 -1.26807787 0.61941937 0.40683047]
[-1.03161855 -1.23595668 1.54022423 -0.74237974]
[-1.55127342 1.67563386 -0.97895193 1.70391295]
[-1.23341949 0.09689477 -0.50175499 -0.63970651]
[ 0.17859581 -1.74168996 -0.8277483 0.23756665]]
1행의 합과 최대값
-1.2320014629208895
0.6194193744851698
2행의 합과 최대값
-1.4697307416436023
1.5402242284791654
3행의 합과 최대값
0.8493214631503689
1.7039129520342273
[[0. 0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0. 0.]]
1~36 채우기
[[ 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. 36.]]
2번째 행 전체 원소 출력
[ 7. 8. 9. 10. 11. 12.]
5번째 열 전체 원소 출력
[ 5. 11. 17. 23. 29. 35.]
부분 출력
[[15. 16. 17.]
[21. 22. 23.]
[27. 28. 29.]]
2-2번
[[0. 0. 0. 0.]
[0. 0. 0. 0.]
[0. 0. 0. 0.]
[0. 0. 0. 0.]
[0. 0. 0. 0.]
[0. 0. 0. 0.]]
3번
[[ 0.21862159 2.23607505 -0.56159948 2.0627482 -1.35312291]
[-0.45196089 2.38118527 0.54214996 0.29531398 -1.3756751 ]
[ 0.11210441 1.60344909 0.71672278 1.10790232 0.41659081]
[-1.28873769 -0.26544286 0.01087163 -1.22702418 0.02647448]]
평균 : 0.2603323229168358
합계 : 5.206646458336715
표준편차 : 1.1396837454447413
분산 : 1.298879039630954
최대값 : 2.38118527114613
최소값 : -1.3756751031190795
1사분위 : -0.4793705371100291
2사분위 : 0.16536299941867438
3사분위 : 0.8145176683660762
요소값누적합 : [0.21862159 2.45469664 1.89309716 3.95584536 2.60272245 2.15076156
4.53194683 5.07409679 5.36941077 3.99373567 4.10584008 5.70928917
6.42601195 7.53391427 7.95050508 6.66176739 6.39632453 6.40719616
5.18017198 5.20664646]
'python' 카테고리의 다른 글
[Python] (8) Numpy 배열 결합 (0) | 2020.06.15 |
---|---|
[Python] (6) Numpy broadcasting (브로드캐스팅) (0) | 2020.06.14 |
[Python] Numpy (5) 집합, 전치 (0) | 2020.06.02 |
[Python] Numpy (4) - 배열 연산 , 벡터 내적 (0) | 2020.06.01 |
[Python] Numpy (3) - 슬라이싱 , 서브배열 (0) | 2020.06.01 |