반응형

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]
반응형
반응형

range 함수란 ?

 

이 함수는 입력받은 숫자에 해당하는 범위 값을 반복 가능한 객체로 만들어준다.

 

아래 소스코드를 기준으로 인수가 1개일때, 2개일때, 등등 풀어보겠습니다.

def ShowGugu(start, end = 5):
    for dan in range(start, end+1):
        print(str(dan) + '단출력')

 

인수가 1개일 때,

# 인수가 1개일 때
ShowGugu(3)

출력 결과

3단출력
4단출력
5단출력

 

인수가 2개일 때,

# 인수가 2개 일때
ShowGugu(2,3)
print()

출력 결과

2단출력
3단출력

* 주의점 끝 숫자는 해당 범위에 포함되지 않는다

 

 

인수의 시작을 2 끝을 4로 주었을 경우

# 인수의 시작이 2부터 끝인 4까지
ShowGugu(start=2, end=4)
print()

출력 결과

2단출력
3단출력
4단출력

 

반응형

'python' 카테고리의 다른 글

python - 파이썬은 1급 함수인가 ?  (0) 2020.05.08
python - 가변인수  (0) 2020.05.08
python - 모듈  (0) 2020.05.08
python - 함수  (0) 2020.05.07
python - 반복문 (for)  (0) 2020.05.07
반응형

내장 함수란 ?

 

파이썬에서 기본적으로 제공하는 기능입니다.

 

내장 함수의 종류는 많기 때문에, 예제는 제가 주로 공부한 함수에 대해 작성하였으며 더 많은 내장함수 종류들은 해당 링크에 첨부하였습니다 !

 

https://wikidocs.net/32

 

위키독스

온라인 책을 제작 공유하는 플랫폼 서비스

wikidocs.net

 

 

Ex 1)

print(sum([3,5,7]))
print(int(1.7), float(4), str(5))
print(round(1.2), round(1.6)) # 반올림

 

sum 은 합을 구하는 함수로 3 + 5 + 7 의 값을 출력한다.

int 는 정수이므로 1 출력, float 는 실수이므로 4.0 출력 str 은 문자열이므로 5를 문자열로 출력

round는 반올림으로 1.2 -> 1 출력, 1.6 -> 2 출력

 

출력 결과

 

 

Ex 3)

# zip 함수란 ? 동일한 개수로 이루어진 자료형을 묶어주는 함수

# 아래 예제는 공통 개수만큼 묶어주기 때문에 30은 출력되지 않는다.

 

x = [10,20,30]
y = ['a', 'b']

for i in zip(x,y):
    print(i)
    

 

출력 결과

 

 

Ex 4) 사용자 정의 함수

사용자 정의 함수 형태는 이렇습니다.

def 함수명():
	print('내용')

 

def DoFunc1():
    print('DoFunc1 실행')
    
DoFunc1()
  
print(DoFunc1) # 주소를 출력한 것

abc = DoFunc1
abc()

 

함수명을 DoFunc1() 로 주었고 실행하면 'DoFunc1 실행' 이 출력되도록 작성하였습니다.

DoFunc1() 에서 print 내용을 출력하고

DoFunc1 로 줄 경우 값이 아닌 해당 주소를 출력하게 됩니다.

 

abc에 DoFunc1을 정의해주었기 때문에 abc() 또한 'DoFunc1 실행'을 출력하게 됩니다.

 

출력 결과

 

 

Ex 5) 사용자 함수 내에 또다른 사용자 함수를 정의

 

def DoFunc2(a, b):
    print('DoFunc2')
    result = DoFunc3(a,b)
    return result

def DoFunc3(m,n):
    imsi = m+n
    return imsi  

bcd = DoFunc2
print(bcd(5, 6))

 

DoFunc2(a, b) 함수 안에 DoFunc3 함수를 또 한번 정의 해주었습니다.

출력 내용 bcd(5,6)을 보면 DoFunc2 함수로 가게됩니다.

이후 우선 'DoFunc2'를 출력하고 DoFunc3 함수의 a에는 5 b에는 6이 들어가고 ,

그 해당 값 계단을 DoFunc3 함수에서 imsi 변수에 5 + 6을 하여 반환해주면 그 값이 result 값으로 들어가게 됩니다.

 

출력 결과

 

 

Ex 6) 비슷한 내장함수 응용

 

player = '전국대표'

def FuncSoccer():
    name = '축구선수'
    print(name,player)
    
FuncSoccer()
print(player)

 

출력 결과

 

 

Ex 7) 사용자 정의 함수에 전역변수 지역변수 이용

 

a = 10; b = 20; c = 30
print('1) a: ' , a, ', b:', b, ', c: ', c)
def Good():
    a = 40
    b = 50
    print('2) a: ' , a, ', b:', b, ', c: ', c)
Good()

 초기에 전역변수로 주었지만, Good 함수 안에서 a는 40 b는 50으로 주었기 때문에

1)은 각각의 출력 값이 10 20 30 이지만 2)는 40 50 30 입니다.

 

출력 결과

 

 

여기서 지역변수로 값을 변경 하는 것이 아닌 전역변수의 값을 내장 함수 안에서 바꾸고 싶다면

global keyword를 사용해주면 됩니다.

 

a = 10; b = 20; c = 30
print('1) a: ' , a, ', b:', b, ', c: ', c)
def Good():
    a = 40
    b = 50
    global c
    c = 100
    
Good()
print('2)a: ' , a, ', b:', b, ', c: ', c)

변수 c를 global 키워드를 통해 100으로 변경해주었습니다.

 

여기서 global 선언을 해주지 않는다면 c 값은 100이 아닌 30 이 출력 됩니다.

 

lambda

 

# def 와 동일한 역할로 함수 이름이 길면 사용하기에 부적합하다.

 

lambda 매개변수1, 매개변수2, ... : 표현식
aaa = lambda a, su = 10: a + su
print(aaa(5))
print(aaa(5,6))

여기서는 a+su를 더한 값을 반환하는 람다 함수를 만들었습니다.

 

출력 결과

 

 

bbb = lambda a, *tu, **di:print(a, tu, di)
bbb(1,2,3,m=4, n=5)

li = [lambda a, b: a+b, lambda a, b: a*b]
print(li[0](3,4))
print(li[1](3,4))

# 다른 함수에서 람다 사용
print(list(filter(lambda a:a<5, range(10))))
print(list(filter(lambda a:a % 2, range(10))))

 

반응형

'python' 카테고리의 다른 글

python - range  (0) 2020.05.08
python - 모듈  (0) 2020.05.08
python - 반복문 (for)  (0) 2020.05.07
python - 반복문 (while)  (0) 2020.05.07
python - 제어문 ( if )  (0) 2020.05.07

+ Recent posts