Python R처럼 벡터연산이 되지 않는다



list+int 연산의 오류라 list+list는 가능할 줄 알았는데, 불가능하다.

 

lambda 라는 기법을 통해 사용자 정의함수 생성

 - 간단한 인풋과 아웃풋 처리

문법 : >>> lambda input : output

 

-IN Python-

f1 = lambda x : x+10

 

- IN R-

f1 <- function(x) {

return(x+10)

}

 

적용함수

- apply : 행별, 컬럼별 연산(그룹연산)

- map  : 원소별 연산( in R = sapply )


map(func, iterrables) --> map object

 


원소별 적용을 하기 위해 map 함수 사용

but, 데이터내에만 저장. 바로 출력되지 않으므로 출력 형식 지정



list()로 형식을 지정해주니 의도한대로 출력된다.


map 사용과 미사용의 차이


 

형 변환 함수


int : 숫자로 변경할 수 있는 문자를 숫자형으로 변경

str : 숫자, 날짜 등을 문자형으로 변경

 

l1리스트를 [01,02,03] 형식으로 변경하기


-> 포맷 변환 사용



-> 형 변환 사용



실습문제


#다음의 리스트를 생성
l1 = [1,2,3,4]
l2 = [10,20,30,40]
l3 = [1.567, 2.456, 5.342, 5.534]


1. l1을 소숫점 둘째자리로 표현

f1 = lambda x:"%.2f" % x
list(map(f1,l1))


['1.00', '2.00', '3.00', '4.00']

※ 출력결과를 int로 바꾸는건 차후 학습예정

2. l3을 정수자리로 표현(버림)

import math
f2 = lambda x:math.trunc(x)
list(map(f2,l3))


[1, 2, 5, 5]

3. l1 + l2 계산

f3 = lambda x,y: x+y
list(map(f3,l1,l2))


[11, 22, 33, 44]

4. l2의 l1승 출력, 10^1, 20^2, 30^3, 40^4

f4 = lambda x,y: x ** y
list(map(f4,l2,l1))


[10, 400, 27000, 2560000]




'Python' 카테고리의 다른 글

Python 설치 & 기초 조작  (0) 2019.01.22

+ Recent posts