• Tistory
    • 태그
    • 위치로그
    • 방명록
    • 관리자
    • 글쓰기
Carousel 01
Carousel 02
Previous Next

'Programming/Python'에 해당되는 글 47건

  • 2022.05.09 골뱅이 연산자의 의미 (행렬곱).
  • 2022.03.16 예쁘게 출력하자 pprint - pretty print
  • 2022.02.07 이미지 실제 파일 포맷 확인하기
  • 2022.01.20 warning 을 on/off 하자
  • 2021.10.06 python version에 따른 pickle 버전 정리
  • 2021.08.06 pycharm 에서 인덱싱 제외 폴더를 설정하자
  • 2021.07.02 string 앞에 0 또는 문자를 삽입하여 길이를 맞추자
  • 2021.06.18 설치된 라이브러리 리스트를 requirements.txt 로 만들자.
  • 2021.04.13 반올림은 반올림이 아니다? round의 처리 방법
  • 2021.04.01 tqdm 과 enumerate
  • 2021.03.10 Call by Value? Call by Reference??
  • 2021.01.19 python2.X 에서 opencv-python을 설치하자
  • 2021.01.11 list에서 중복 내용을 제거하자
  • 2020.12.14 os에 따른 기본 파일 인코딩 형식
  • 2020.12.01 데이터와 인덱스를 알려주는 enumerate
  • 2020.10.28 CondaVerificationError를 해결하자
  • 2020.05.27 폴더의 이름을 일괄 변경하자
  • 2020.05.18 Python array에서 extended slices를 사용하자
  • 2020.05.12 Anaconda 가상환경 구동 및 프로그램실행을 batch로 만들자 (1)
  • 2020.03.09 python에서의 Asterisk는 무슨일을 하는가.

골뱅이 연산자의 의미 (행렬곱).

Programming/Python 2022. 5. 9. 10:17




이전에 파이썬에서 쓰이는 골뱅이는 데코레이터의 역할로 확인했었고 그것만 기억하고 있었다.

골뱅이, DECORATOR를 이용하여 함수 실행시간을 측정하자.

 

골뱅이, decorator를 이용하여 함수 실행시간을 측정하자.

프로그램을 구현하다 보면 특정 기능이 어느정도 시간을 소요하는지 확인이 필요한 경우가 있다. 이럴때 보통 아래와 같이 시간 측정을 위한 code 앞뒤에서 time 라이브러리를 이용하여 시간을 계

jangjy.tistory.com

 

 

이후 코드를 보다 중간에 골뱅이가 쓰인것을 보고 찾아본 다른 사용법.

 


@ 연산자는 numpy에서 matmul 또는 dot와 같은 역할을 한다.

즉, 행렬곱을 계산하는 연산자이다.

 

asterisk로 표현되는 element-wise 곱 연산이 아닌 행렬-행렬간 곱을 계산할때 사용한다.

저작자표시

'Programming > Python' 카테고리의 다른 글

골뱅이 연산자의 의미 (행렬곱).  (0) 2022.05.09
예쁘게 출력하자 pprint - pretty print  (0) 2022.03.16
이미지 실제 파일 포맷 확인하기  (0) 2022.02.07
warning 을 on/off 하자  (0) 2022.01.20
python version에 따른 pickle 버전 정리  (0) 2021.10.06
pycharm 에서 인덱싱 제외 폴더를 설정하자  (0) 2021.08.06
블로그 이미지

매직블럭

작은 지식들 그리고 기억 한조각

트랙백 0개, 댓글 0개가 달렸습니다

댓글을 달아 주세요

예쁘게 출력하자 pprint - pretty print

Programming/Python 2022. 3. 16. 11:05




딕셔너리, json 등을 print로 찍어 볼 일이 가끔 있는데 

이런 데이터들은 그냥 print로 출력하면 정보가 구분없이 한주롤 쭉 나와서 가독성이 크게 떨어진다

이럴 때 사용가능한 예쁜 출력 - pretty print -> pprint!

 


사용법은 매우 심플하게

pprint 모듈의 pprint를 import 해 준 뒤 print 대신 pprint를 사용하면 된다

 

from pprint import pprint

data = {~~~~블라블라~~~}

# 기존 출력 
print(data)

# 예쁘게 출력
pprint(data)
저작자표시

'Programming > Python' 카테고리의 다른 글

골뱅이 연산자의 의미 (행렬곱).  (0) 2022.05.09
예쁘게 출력하자 pprint - pretty print  (0) 2022.03.16
이미지 실제 파일 포맷 확인하기  (0) 2022.02.07
warning 을 on/off 하자  (0) 2022.01.20
python version에 따른 pickle 버전 정리  (0) 2021.10.06
pycharm 에서 인덱싱 제외 폴더를 설정하자  (0) 2021.08.06
블로그 이미지

매직블럭

작은 지식들 그리고 기억 한조각

트랙백 0개, 댓글 0개가 달렸습니다

댓글을 달아 주세요

이미지 실제 파일 포맷 확인하기

Programming/Python 2022. 2. 7. 13:01




이미지 파일을 사용하다 보면 파일명의 확장자와 실제 이미지의 포맷이 다른 경우가 가끔 있다.

 

이런 파일을 확인하기 위한 방법 정리.


파이썬의 PIL-Image 모듈을 이용하면 쉽게 실제 포맷을 확인 할 수 있다.

 

from PIL import Image
 
img = Image.open("sample01.jpg")
img.format

>> 'GIF' 
# 이 경우 파일명 확장자는 jpg 이나 실제 이미지 포맷은 gif인 경우.

 

실제 정보를 확인 한 후 적절한 처리를 하고 사용하면 된다.

저작자표시

'Programming > Python' 카테고리의 다른 글

골뱅이 연산자의 의미 (행렬곱).  (0) 2022.05.09
예쁘게 출력하자 pprint - pretty print  (0) 2022.03.16
이미지 실제 파일 포맷 확인하기  (0) 2022.02.07
warning 을 on/off 하자  (0) 2022.01.20
python version에 따른 pickle 버전 정리  (0) 2021.10.06
pycharm 에서 인덱싱 제외 폴더를 설정하자  (0) 2021.08.06
블로그 이미지

매직블럭

작은 지식들 그리고 기억 한조각

트랙백 0개, 댓글 0개가 달렸습니다

댓글을 달아 주세요

warning 을 on/off 하자

Programming/Python 2022. 1. 20. 15:16




외부 라이브러리들을 사용하다보면 여러 이유로 warning이 발생하곤 한다

정보 전달을 목적으로 경고를 띄워주는 것이긴 하지만 

release 상태에서는 경고 없이 실행한 결과만 보고싶을 때 아래와 같이 경고를 끄는것이 가능하다

 


import warnings

# warning off
warnings.filterwarnings("ignore")

# warning on
warnings.filterwarnings("default")
저작자표시

'Programming > Python' 카테고리의 다른 글

예쁘게 출력하자 pprint - pretty print  (0) 2022.03.16
이미지 실제 파일 포맷 확인하기  (0) 2022.02.07
warning 을 on/off 하자  (0) 2022.01.20
python version에 따른 pickle 버전 정리  (0) 2021.10.06
pycharm 에서 인덱싱 제외 폴더를 설정하자  (0) 2021.08.06
string 앞에 0 또는 문자를 삽입하여 길이를 맞추자  (0) 2021.07.02
블로그 이미지

매직블럭

작은 지식들 그리고 기억 한조각

트랙백 0개, 댓글 0개가 달렸습니다

댓글을 달아 주세요

python version에 따른 pickle 버전 정리

Programming/Python 2021. 10. 6. 16:40




pickle 데이터를 load 할 때 가끔 unsupport protocol 에러를 보는 경우가 있다.

이 경우 dump 한 버전과 load 한 버전이 달라서 발생하는 문제.

 

기본 버전을 확인하기 위해 기록

 


python ver. pickle protocol ver.
1.x 1
2.3~2.7 2
3.0~3.7 3
3.8 4
3.8 5
저작자표시

'Programming > Python' 카테고리의 다른 글

이미지 실제 파일 포맷 확인하기  (0) 2022.02.07
warning 을 on/off 하자  (0) 2022.01.20
python version에 따른 pickle 버전 정리  (0) 2021.10.06
pycharm 에서 인덱싱 제외 폴더를 설정하자  (0) 2021.08.06
string 앞에 0 또는 문자를 삽입하여 길이를 맞추자  (0) 2021.07.02
설치된 라이브러리 리스트를 requirements.txt 로 만들자.  (0) 2021.06.18
블로그 이미지

매직블럭

작은 지식들 그리고 기억 한조각

트랙백 0개, 댓글 0개가 달렸습니다

댓글을 달아 주세요

pycharm 에서 인덱싱 제외 폴더를 설정하자

Programming/Python 2021. 8. 6. 11:07




pycharm 을 이용하다 보면 프로젝트 폴더에 있는 파일에 대해 인덱싱을 수행한다. 

파일 수가 얼마 없을때는 금방 끝나지만 프로젝트 폴더 안에 파일이 많거나 

수행 결과물이 대량으로 생성되는 경우에는 다시 인덱싱을 수행하느라 CPU도 엄청 잡아먹고

인덱싱 중에는 또 실행도 안되는 문제가 있다.

 

그래서 DB 폴더나 출력폴더와 같이 별도의 인덱싱이 필요하지 않은 폴더를 제외하는 방법을 기록


1. File - Settings - Project - Project Structure 

2. 프로젝트 폴더 중 제외 할 폴더를 선택

3. 상단의 Mark as: 항목 중 Excluded 를 선택.

 

위 과정을 거치면 제외될 폴더가 structure 에서 붉은색 아이콘으로 excluded 되고 

해당 폴더 내의 파일은 인덱싱에서 제외 된다.

저작자표시

'Programming > Python' 카테고리의 다른 글

warning 을 on/off 하자  (0) 2022.01.20
python version에 따른 pickle 버전 정리  (0) 2021.10.06
pycharm 에서 인덱싱 제외 폴더를 설정하자  (0) 2021.08.06
string 앞에 0 또는 문자를 삽입하여 길이를 맞추자  (0) 2021.07.02
설치된 라이브러리 리스트를 requirements.txt 로 만들자.  (0) 2021.06.18
반올림은 반올림이 아니다? round의 처리 방법  (0) 2021.04.13
블로그 이미지

매직블럭

작은 지식들 그리고 기억 한조각

트랙백 0개, 댓글 0개가 달렸습니다

댓글을 달아 주세요

string 앞에 0 또는 문자를 삽입하여 길이를 맞추자

Programming/Python 2021. 7. 2. 11:06




string을 사용하다 보면 내용 앞에 특정 값을 삽입하여 전체 문자열의 길이를 맞춰야 할 경우가 있다

 

그럴 경우 사용 가능한 함수 정리

 


1. zfill(width)

# zfill 은 자리수에 맞춰 0값으로 채워준다

> "123".zfill(5)
# "00123"

> "1".zfill(4)
# "0001"

 

2. rjust(width, fillchar)

# rjust 은 자리수에 맞춰 fillchar값으로 채워준다

> "123".rjust(5, '0')
# "00123"

> "1".rjust(4, '0')
# "0001"

> "123".rjust(5, 's')
# "ss123"

> "1".rjust(4, 's')
# "sss1"
저작자표시

'Programming > Python' 카테고리의 다른 글

python version에 따른 pickle 버전 정리  (0) 2021.10.06
pycharm 에서 인덱싱 제외 폴더를 설정하자  (0) 2021.08.06
string 앞에 0 또는 문자를 삽입하여 길이를 맞추자  (0) 2021.07.02
설치된 라이브러리 리스트를 requirements.txt 로 만들자.  (0) 2021.06.18
반올림은 반올림이 아니다? round의 처리 방법  (0) 2021.04.13
tqdm 과 enumerate  (0) 2021.04.01
블로그 이미지

매직블럭

작은 지식들 그리고 기억 한조각

트랙백 0개, 댓글 0개가 달렸습니다

댓글을 달아 주세요

설치된 라이브러리 리스트를 requirements.txt 로 만들자.

Programming/Python 2021. 6. 18. 16:20




github 등 외부에서 작성된 코드들을 보다보면 requirements.txt 파일을 종종 보게 된다

이는 해당 코드 동작에 필요한라이브러리 목록을 적어 둔 것으로 

이 파일을 읽어 모든 라이브러리를 한번에 설치하는것이 가능하다. 

 

이러한 사용중인 설치된 라이브러리 목록을 requirements.txt로 만드는 방법 정리.

 


패기지 목록을 생성하기 위해서는 freeze 라는 명령어를 사용한다.

 

# > 는 결과물을 파일 등으로 출력할 때 사용.
>> pip freeze > requirements.txt

 

하지만 이렇게 출력하니 버전이 올바르게 출력된 패키지도 있는 반면

일부 패키지는 버전 정보가 올바르게 표현되지 않는 경우도 있었다.

# 예시
matplotlib @ file:///C:/ci/matplotlib-base_1597858387645/work
numpy==1.20.2

 

이러한 현상을 방지하기 위해서는 아래와 같이 list를 출력하여 사용하면 위와같은 문제가 발생하지 않는다.

>> pip list --format=freeze > requirements.txt

# 출력파일 예시
matplotlib==3.3.1
numpy==1.20.2

추가로 requirements.txt. 에 정의된 라이브러리를 일괄 설치하기 위해서는 아래와 같이 사용한다.

>> pip install -r requirements.txt
저작자표시

'Programming > Python' 카테고리의 다른 글

pycharm 에서 인덱싱 제외 폴더를 설정하자  (0) 2021.08.06
string 앞에 0 또는 문자를 삽입하여 길이를 맞추자  (0) 2021.07.02
설치된 라이브러리 리스트를 requirements.txt 로 만들자.  (0) 2021.06.18
반올림은 반올림이 아니다? round의 처리 방법  (0) 2021.04.13
tqdm 과 enumerate  (0) 2021.04.01
Call by Value? Call by Reference??  (0) 2021.03.10
블로그 이미지

매직블럭

작은 지식들 그리고 기억 한조각

트랙백 0개, 댓글 0개가 달렸습니다

댓글을 달아 주세요

반올림은 반올림이 아니다? round의 처리 방법

Programming/Python 2021. 4. 13. 13:31




일반적으로 round는 반올림을 하는 함수로 생각하고 있었다.

5미만은 버림, 5이상은 올림을 수행하는 통계적인 반올림..

 

그러나 파이썬에서 round는 이러한 통계적 반올림을 수행하는 것이 아니란것을 알게됨.

 

그렇다면? 파이썬의 round는 0 또는 짝수에 가깝게 만드는 방향으로 수행된다.

 

예를들어 0.5, 1.5, 2.5 의 값이 있을경우 각각의 반올림 결과는

0, 2, 2 가된다. ( 1, 2, 3 이 아니고?? )

 

왜냐하면 python의 수학적 반올림 기법에서는

0 < 0.5 << 1(홀수)

1(홀수) << 1.5 < 2 (짝수)

2(짝수) < 2.5 << 3 (홀수) 

로 처리되어 1.5와 2.5의 round 결과가 동일하게 처리됨을 알 수 있다.

 

정확한 통계적 반올림 결과가 필요하다면 직접 구현이 필요할 것이고,

아니라면 round의 특성을 알고 사용해야 나중에 멘붕에 빠지지 않을수 있겠네..

 

저작자표시

'Programming > Python' 카테고리의 다른 글

string 앞에 0 또는 문자를 삽입하여 길이를 맞추자  (0) 2021.07.02
설치된 라이브러리 리스트를 requirements.txt 로 만들자.  (0) 2021.06.18
반올림은 반올림이 아니다? round의 처리 방법  (0) 2021.04.13
tqdm 과 enumerate  (0) 2021.04.01
Call by Value? Call by Reference??  (0) 2021.03.10
python2.X 에서 opencv-python을 설치하자  (0) 2021.01.19
블로그 이미지

매직블럭

작은 지식들 그리고 기억 한조각

트랙백 0개, 댓글 0개가 달렸습니다

댓글을 달아 주세요

tqdm 과 enumerate

Programming/Python 2021. 4. 1. 15:28




data loader 등을 사용하다 보면 자주 쓰이는 tqdm과 enumerate.

 

보통 코드에 기본적으로 enumerate를 사용하게 구현되어있고 

여기에 프로그레스 정보를 보고싶어 tqdm으로 감싸주면 정보가 제대로 표시되지 않는 문제가 발생한다.

 

이 문제는 생각보다 간단한 문제로

tqdm을 겉에 두르면 이녀석이 관찰하는 데이터는 enumerate의 정보이기 떄문에 제대로 표시가 안 된 것이다.

 

해결방법은 더 간단하게 enumerage와 tqdm의 순서를 바꿔주면 된다.

 

# tqdm progress 정보 제대로 출력 X
for ii, data in tqdm(enumerate(dataset)):

# tqdm progesss 정보 제대로 출력 O
for ii, data in enumerate(tqdm(dataset)):

 

저작자표시

'Programming > Python' 카테고리의 다른 글

설치된 라이브러리 리스트를 requirements.txt 로 만들자.  (0) 2021.06.18
반올림은 반올림이 아니다? round의 처리 방법  (0) 2021.04.13
tqdm 과 enumerate  (0) 2021.04.01
Call by Value? Call by Reference??  (0) 2021.03.10
python2.X 에서 opencv-python을 설치하자  (0) 2021.01.19
list에서 중복 내용을 제거하자  (0) 2021.01.11
블로그 이미지

매직블럭

작은 지식들 그리고 기억 한조각

트랙백 0개, 댓글 0개가 달렸습니다

댓글을 달아 주세요

Call by Value? Call by Reference??

Programming/Python 2021. 3. 10. 16:35




python을 사용하면서 막연히 파이썬의 함수 파라메터는 call by value 방식이라고 생각했다.

 

문득 내가 쓰는 코드를 보니 왜 그렇게 짰는지도 모르겠지만 call by reference 형태로 동작하는 

코드를 짜서 쓰고있는 부분을 발견.. 

 

그럼 파이썬은 call by value야? call by reference야?.. 궁금해서 찾아본 결과는

파이썬은 call by assignment 방식 또는 call by object reference 라고 표현하더라.

 

<파이썬 알고리즘 인터뷰>  p.107, 책만, 2020

어떤 의미냐 하면 우선 파이썬의 표준타입들을 보면 여러 타입이 있지만 그 중에서 

상수(숫자), 문자열, 바이트, 튜플 이 네가지 타입은 불변 타입이고 나머지 타입은 가변타입이다.

 

파라미터로 사용될때 불변타입은 값 변경이 불가능하여 새로운 객체로 복사전달되어 call by value 처럼 동작하고,

나머지 가변타입들은 값 변경이 가능하여 call by reference 방식으로 동작하게 된다.

 

막연히 사용하던 내용인데 이 부분도 참 편하다 파이썬..

저작자표시

'Programming > Python' 카테고리의 다른 글

반올림은 반올림이 아니다? round의 처리 방법  (0) 2021.04.13
tqdm 과 enumerate  (0) 2021.04.01
Call by Value? Call by Reference??  (0) 2021.03.10
python2.X 에서 opencv-python을 설치하자  (0) 2021.01.19
list에서 중복 내용을 제거하자  (0) 2021.01.11
os에 따른 기본 파일 인코딩 형식  (0) 2020.12.14
블로그 이미지

매직블럭

작은 지식들 그리고 기억 한조각

트랙백 0개, 댓글 0개가 달렸습니다

댓글을 달아 주세요

python2.X 에서 opencv-python을 설치하자

Programming/Python 2021. 1. 19. 08:00




 

요즘이야 python 3.x를 보통 사용하니 별 문제가 될일이 없지만

가끔 python2.x 버전을 사용해야 하는 경우가 있다.

 

이런 환경에서 opencv-python을 설치하려 하면 버전 문제로 설치가 안되는 경우가 발생한다.

이는 opencv-python 최신 버전에서 더이상 python2버전을 지원하지 않기 때문이다.

버전 history에 관한 자세한 내용은 아래 pypi 사이트에서 확인할 수 있다.

pypi.org/project/opencv-python/#history

 

opencv-python

Wrapper package for OpenCV python bindings.

pypi.org

 

그래서 아래와 같이 python2버전을 지원하는 버전으로 지정하여 설치하면 된다.

파이썬 2버전을 지원하는 마지막 opencv-python 은 4.2.0.32 버전이다.

 

$ pip2 install opencv-python==4.2.0.32

저작자표시

'Programming > Python' 카테고리의 다른 글

tqdm 과 enumerate  (0) 2021.04.01
Call by Value? Call by Reference??  (0) 2021.03.10
python2.X 에서 opencv-python을 설치하자  (0) 2021.01.19
list에서 중복 내용을 제거하자  (0) 2021.01.11
os에 따른 기본 파일 인코딩 형식  (0) 2020.12.14
데이터와 인덱스를 알려주는 enumerate  (0) 2020.12.01
블로그 이미지

매직블럭

작은 지식들 그리고 기억 한조각

트랙백 0개, 댓글 0개가 달렸습니다

댓글을 달아 주세요

list에서 중복 내용을 제거하자

Programming/Python 2021. 1. 11. 06:31




리스트를 이용하여 데이터를 관리하다 보면 중복 데이터가 발생하는 경우가 있다.

 

중복 데이터 제거가 필요한 경우를 위하여 방법 기록.

 


1. for문을 이용한 중복 제거 (순서 유지)

반복문을 이용하여 새로운 리스트에 값을 append. 이 과정에서 새로운 리스트에 값이 있으면 skip.

old_list = [1, 2, 3, 1, 3, 4, 5, 6, 7]
new_list = []

for ii in old_list:
	if ii not in new_list:
    	new_list.append(ii)

return new_list
# new_list == [1, 2, 3, 4, 5, 6, 7]

 

2. set을 이용한 중복 제거 (순서 유지 안됨)

중복데이터를 허용하지 않는 set 자료형을 이용하여 형변환을 이용한 중복 제거. 이 과정에서 순서는 보장 X

old_list = [1, 2, 3, 1, 3, 4, 5, 6, 7]
temp_set = set(old_list)
new_list = list(temp_set)

return new_list
# new_list == [1, 2, 3, 4, 5, 6, 7]
# 단, 순서는 원 데이터에 따라 달라질 수 있음.
저작자표시

'Programming > Python' 카테고리의 다른 글

Call by Value? Call by Reference??  (0) 2021.03.10
python2.X 에서 opencv-python을 설치하자  (0) 2021.01.19
list에서 중복 내용을 제거하자  (0) 2021.01.11
os에 따른 기본 파일 인코딩 형식  (0) 2020.12.14
데이터와 인덱스를 알려주는 enumerate  (0) 2020.12.01
CondaVerificationError를 해결하자  (0) 2020.10.28
블로그 이미지

매직블럭

작은 지식들 그리고 기억 한조각

트랙백 0개, 댓글 0개가 달렸습니다

댓글을 달아 주세요

os에 따른 기본 파일 인코딩 형식

Programming/Python 2020. 12. 14. 14:57




 

파이썬에서 파일을 저장할 때 인코딩 방식이 정해지면

다시 읽을때도 해당 방식으로 디코딩을 해야 정상적인 데이터를 읽을 수 있다.

 

나의 경우에는 보통 이런 문제는 windows <-> linux 환경에서 자주 겪었다.

 

매번 어떤 환경에서 어떤 방식을 썼는지 햇갈리니 일단 기록.

 


1. 인코딩 방식 확인하기

1.1 기본 시스템 인코딩 타입 확인하기

import sys

sys.stdin.encoding
# cp949

sys.stdout.encoding
# cp949

1.2 라이브러리를 이용하여 문자열 / 파일의 인코딩 타입 확인하기

# chardet 라이브러리를 이용
# pip install chardet


import chardet

# 문자열
str = "example text"
print(chardet.detect(str.encode))
# {'encoding': 'cp949', 'confidence': 0.99, 'language': ''}

# 파일
with open("./example_file.txt", 'r') as file:
	line = file.readline()
    
    print(chardet.detect(line.encode()))
    # # {'encoding': 'cp949', 'confidence': 0.99, 'language': ''}

 

2. encoding= 파라미터로 인코딩 방식 지정하기

with open("./example_file.txt", 'r', encoding="cp949") as file:
	line = file.readline()

 

3. (참고용) os에 따른 기본 인코딩 타입 (python 3.7 기준)

  • windows : cp949
  • linux : utf-8

파이썬 버전에 따른 인코딩 타입이 다른지는 모르겠다. (확인되면 수정하기)

euc-kr 도 종종 보이나 cp949가 euc-kr의 상위 버전이므로 가능하면 cp949를 사용하자.

저작자표시

'Programming > Python' 카테고리의 다른 글

python2.X 에서 opencv-python을 설치하자  (0) 2021.01.19
list에서 중복 내용을 제거하자  (0) 2021.01.11
os에 따른 기본 파일 인코딩 형식  (0) 2020.12.14
데이터와 인덱스를 알려주는 enumerate  (0) 2020.12.01
CondaVerificationError를 해결하자  (0) 2020.10.28
폴더의 이름을 일괄 변경하자  (0) 2020.05.27
블로그 이미지

매직블럭

작은 지식들 그리고 기억 한조각

트랙백 0개, 댓글 0개가 달렸습니다

댓글을 달아 주세요

데이터와 인덱스를 알려주는 enumerate

Programming/Python 2020. 12. 1. 07:47




for문과 함께 많이 사용하는 기능 중 꽤나 유용한 enumerate.

 

일반적으로 순회할 데이터를 enumerate로 감싸서 데이터와 인덱스를 받아오는데 사용한다.

 

# data list
data = ["red", "blue", "green", "black", "white"]

# range를 이용한 인덱스와 데이터 출력
for ii in range(len(data)):
	output = "Idx : %d / Data : %s" % (ii, data[ii])
    print(output)

# enumerate를 이용한 인덱스와 데이터 출력
# range, len 함수를 하나로 줄이고 데이터에 인덱스로 접근하는 과정을 생략
for ii, color in enumerate(data):
	output = "Idx : %d / Data : %s" % (ii, color)
    print(output)
# Idx : 0 / Data : red
# Idx : 1 / Data : blue
# Idx : 2 / Data : green
# Idx : 3 / Data : black
# Idx : 4 / Data : white

 

일반적으로는 enumerate에 첫번째 파라미터만 채워서 사용했는데

두번쨰 파라미터로 시작인덱스값을 지정 가능하다는것을 알게되어 기록

# data list
data = ["red", "blue", "green", "black", "white"]

# enumerate를 이용한 인덱스와 데이터 출력
# 두번째 파라미터로 시작 인덱스를 지정할 수 있다.
for ii, color in enumerate(data, 100):
	output = "Idx : %d / Data : %s" % (ii, color)
    print(output)
# Idx : 100 / Data : red
# Idx : 101 / Data : blue
# Idx : 102 / Data : green
# Idx : 103 / Data : black
# Idx : 104 / Data : white
저작자표시

'Programming > Python' 카테고리의 다른 글

list에서 중복 내용을 제거하자  (0) 2021.01.11
os에 따른 기본 파일 인코딩 형식  (0) 2020.12.14
데이터와 인덱스를 알려주는 enumerate  (0) 2020.12.01
CondaVerificationError를 해결하자  (0) 2020.10.28
폴더의 이름을 일괄 변경하자  (0) 2020.05.27
Python array에서 extended slices를 사용하자  (0) 2020.05.18
블로그 이미지

매직블럭

작은 지식들 그리고 기억 한조각

트랙백 0개, 댓글 0개가 달렸습니다

댓글을 달아 주세요

CondaVerificationError를 해결하자

Programming/Python 2020. 10. 28. 09:44




conda 를 이용하여 특정 패키지를 설치를 시도하던 중 아래와 같은 에러를 만났다.

 

```

CondaVrificationError: The package for pytorch located at C:\~~~~~ 

appears to be corrupted. The path "Lib/site-packages/~~~~~.dll"

specified in the package manifest cannot be found.

```

 

이와 같은 경우 이전에 사용했던 버전 등에서 남은 찌꺼기로 인한 문제로 보여진다.

불필요한 파일을 싹 정리 해주고 다시 설치를 시도하면 정상적으로 설치가 가능하다.

 


# 불필요한 파일 제거 
>> conda clean --all
저작자표시

'Programming > Python' 카테고리의 다른 글

os에 따른 기본 파일 인코딩 형식  (0) 2020.12.14
데이터와 인덱스를 알려주는 enumerate  (0) 2020.12.01
CondaVerificationError를 해결하자  (0) 2020.10.28
폴더의 이름을 일괄 변경하자  (0) 2020.05.27
Python array에서 extended slices를 사용하자  (0) 2020.05.18
Anaconda 가상환경 구동 및 프로그램실행을 batch로 만들자  (1) 2020.05.12
블로그 이미지

매직블럭

작은 지식들 그리고 기억 한조각

트랙백 0개, 댓글 0개가 달렸습니다

댓글을 달아 주세요

폴더의 이름을 일괄 변경하자

Programming/Python 2020. 5. 27. 14:48




대용량의 데이터베이스를 사용하다보면 가끔 폴더의 이름을 일괄 변경하고 싶은 경우가 있다.

 

이럴경우 양이 많지 않으면 흔히 사용하는 DarkRenamer 등의 프로그램을 쓸수도 있지만

폴더/파일의 양이 많은 빅데이터를 다룰때는 이러한 프로그램이 감당을 못한다.

 

그래서 폴더명만 일괄적으로 변경하는 함수를 기록해 두고 필요할때 사용하자..

 


# -*- coding: utf-8 -*-
import sys
import os
from os import rename, listdir


def rename_folder(sRoot):
    # 현재 위치의 파일 목록
    files = listdir(sRoot)

    # 파일명에 번호 추가하기
    count = 0
    for name in files:

        # 파이썬 실행파일명은 변경하지 않음
        if sys.argv[0].split("\\")[-1] == name:
            continue

        new_name = "{0:05d}".format(count)
        rename(os.path.join(sRoot, name), os.path.join(sRoot, new_name))
        count += 1
저작자표시

'Programming > Python' 카테고리의 다른 글

데이터와 인덱스를 알려주는 enumerate  (0) 2020.12.01
CondaVerificationError를 해결하자  (0) 2020.10.28
폴더의 이름을 일괄 변경하자  (0) 2020.05.27
Python array에서 extended slices를 사용하자  (0) 2020.05.18
Anaconda 가상환경 구동 및 프로그램실행을 batch로 만들자  (1) 2020.05.12
python에서의 Asterisk는 무슨일을 하는가.  (0) 2020.03.09
블로그 이미지

매직블럭

작은 지식들 그리고 기억 한조각

트랙백 0개, 댓글 0개가 달렸습니다

댓글을 달아 주세요

Python array에서 extended slices를 사용하자

Programming/Python 2020. 5. 18. 09:27




파이썬 코드를 보다 낯선 문법을 보고 어떤 의미인지 찾아보다 extended slices 에 대하 찾게 되었다.

https://docs.python.org/release/2.3.5/whatsnew/section-slices.html

 

15 Extended Slices

15 Extended Slices Ever since Python 1.4, the slicing syntax has supported an optional third ``step'' or ``stride'' argument. For example, these are all legal Python syntax: L[1:10:2], L[:-1:1], L[::-1]. This was added to Python at the request of the devel

docs.python.org

 

여기서 문제가 됐던 문법은 array[::] 에 관한 부분이다. 

 

array[A:B:C] 라고 사용하면 이는 array중 A에서 B 까지 C 간격으로 배열을 생성한다는 의미이다.

 

A, B, C가 각각 None이라면

A는 처음부터 (0번 index)

B는 가능한 index까지 

C는 1을 의미한다.

 

간단한 예시를 보면 아래와 같다.

>> arr = range(10) 
>> arr [0,1,2,3,4,5,6,7,8,9] 
>> arr[::2] # 처음부터 끝까지 두 칸 간격으로 
   # [0,2,4,6,8] 

>> arr[1::2] # index 1 부터 끝까지 두 칸 간격으로 
   # [1,3,5,7,9] 

>> arr[::-1] # 처음부터 끝까지 -1칸 간격으로 ( == 역순으로) 
   # [9,8,7,6,5,4,3,2,1,0] 
   
>> arr[::-2] # 처음부터 끝까지 -2칸 간격으로 ( == 역순, 두 칸 간격으로) 
   # [9,7,5,3,1] 

>> arr[3::-1] # index 3 부터 끝까지 -1칸 간격으로 ( == 역순으로) 
   # [3,2,1,0] 
   
>> arr[1:6:2] # index 1 부터 index 6 까지 두 칸 간격으로 
   # [1,3,5]

 

이런 단순 배열 뿐만 아니라 Image를 다룰때 간단한 flip을 구현하는데도 사용 가능하다.

# image는 tensor와 같은 순서로 H, W, C 순서라 가정하고..

# h flip
img = img[:, ::-1, :]

# v flip
img = img [::-1, :, :]
저작자표시

'Programming > Python' 카테고리의 다른 글

CondaVerificationError를 해결하자  (0) 2020.10.28
폴더의 이름을 일괄 변경하자  (0) 2020.05.27
Python array에서 extended slices를 사용하자  (0) 2020.05.18
Anaconda 가상환경 구동 및 프로그램실행을 batch로 만들자  (1) 2020.05.12
python에서의 Asterisk는 무슨일을 하는가.  (0) 2020.03.09
골뱅이, decorator를 이용하여 함수 실행시간을 측정하자.  (0) 2020.01.07
블로그 이미지

매직블럭

작은 지식들 그리고 기억 한조각

트랙백 0개, 댓글 0개가 달렸습니다

댓글을 달아 주세요

Anaconda 가상환경 구동 및 프로그램실행을 batch로 만들자

Programming/Python 2020. 5. 12. 11:19




anaconda 가상환경을 구축하고 사용 할 경우 특정 코드를 실행시키기 위해서는 몇번의 단계가 있다.

anaconda prompt 실행 - conda env activete - path 이동 - 코드 실행...

 

자주 사용 할 경우에는 매번 이렇게 반복 작업을 하기 번거로우니 batch 파일로 만들어 두면 편하다.

 

(왜인지는 모르겠는데 cmd에서는 단순 명령어가 바로 실행 됐는데 아나콘다 환경으로 넘어간 뒤에는 call 명령어로 불러줘야 동작하던데.. )

 


 

set root=C:\Miniconda3
call %root%\Scripts\activate.bat %root%

call conda env list
call conda activate [env_name]
call cd [path]
call python [file_name.py]

pause

 

위와같이 메모장 등에서 코드를 작성하고 저장할때 *.bat 파일로 저장 해 주면 

이후 해당 bat 파일을 더블클릭해서 실행하면 자동으로 환경 연결되고 프로그램 실행까지 가능하다.

저작자표시

'Programming > Python' 카테고리의 다른 글

폴더의 이름을 일괄 변경하자  (0) 2020.05.27
Python array에서 extended slices를 사용하자  (0) 2020.05.18
Anaconda 가상환경 구동 및 프로그램실행을 batch로 만들자  (1) 2020.05.12
python에서의 Asterisk는 무슨일을 하는가.  (0) 2020.03.09
골뱅이, decorator를 이용하여 함수 실행시간을 측정하자.  (0) 2020.01.07
python-virtualenv를 이용해 가상환경을 설정하자  (0) 2020.01.02
블로그 이미지

매직블럭

작은 지식들 그리고 기억 한조각

트랙백 0개, 댓글 1개가 달렸습니다

댓글을 달아 주세요

  • 거북이와두루미 2020.10.28 17:50  댓글주소  수정/삭제  댓글쓰기

    정말 감사드립니다. 덕분에 편하게 사용합니다. ^^

python에서의 Asterisk는 무슨일을 하는가.

Programming/Python 2020. 3. 9. 16:33




C++ 에서 포인터에 고통받다 python을 쓰기 시작하면서 한동안 asterisk는 곱셈, 제곱승 등의 연산에서만 봤다

 

그러나 이런저런 코드를 보다보니 c++에서 많이 보던 형태로 사용되는 것을 보고 어떤 역할인지 궁금해서 

찾아보고 나중을 위해 정리 해 둔다.

 

맨 아래에 내가 이해하기 위해 참고한, 보다 자세한 예제가 있는 원본 주소를 추가.


Python 에서 Asterisk 의 사용처

1. 곱셈, 제곱승 

2. 리스트 확장

3. 가변인자

4. unpacking

 

1, 2 번은 자주 쓰고 다 아니까 넘어가고..

 

3. 가변인자

함수의 파라미터로 값을 넘길때 파라미터의 개수가 결정되지 않은 경우 가변인자의 형태로 사용가능

키워드 없이 위치로 결정되는 positional arguments는 * 로 (일반적으로는 *args)

키워드를 갖는 keyword arguments는 **로 사용한다. (일반적으로는 **kwargs)

두가지를 결합해서 사용 할 경우에는 일반 파라미터 규칙과 동일하게 * 를 **보다 앞서서 사용해야 한다.

이러한 형태로 전달하는 과정을 packing 이라 하고 각각 tuple과 dict에 저장된다.

def print_data(*args, **kwargs):
	print(args)
    print(kwargs)
    
print_data("data1", "data2", "data3", kwdata1="data4", kwdata2="data5")
# ("data1", "data2", "data3")
# {"kwdata1": "data4", "kwdata2": "data5"}

 

4. unpacking

이는 3번의 packing개념의 반대로 tuple 이나 dict 데이터를 각각의 데이터를 풀어내는 것이다.

def mult(a, b):
	return a*b
    
mult(2, 2)
# 4

c = {"a": 2, "b": 2}
mult(c["a"], c["b"])
# 4

mult(c)
# error!!

mult(**c)
# 4

 

 

참고 : https://mingrammer.com/understanding-the-asterisk-of-python/#3-%EA%B0%80%EB%B3%80%EC%9D%B8%EC%9E%90-variadic-parameters-%EB%A5%BC-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B3%A0%EC%9E%90-%ED%95%A0-%EB%95%8C

 

파이썬의 Asterisk(*) 이해하기

파이썬은 타 언어에 비해 비교적 연산자 및 연산의 종류가 풍부한 편이다. 특히 파이썬이 지원하는 많은 연산자중 하나인 Asterisk(*)는 단순히 곱셈 이상의 여

mingrammer.com

 

저작자표시

'Programming > Python' 카테고리의 다른 글

Python array에서 extended slices를 사용하자  (0) 2020.05.18
Anaconda 가상환경 구동 및 프로그램실행을 batch로 만들자  (1) 2020.05.12
python에서의 Asterisk는 무슨일을 하는가.  (0) 2020.03.09
골뱅이, decorator를 이용하여 함수 실행시간을 측정하자.  (0) 2020.01.07
python-virtualenv를 이용해 가상환경을 설정하자  (0) 2020.01.02
설정 값 저장을 위해 ConfigParser를 이용 해 보자.  (0) 2019.12.02
블로그 이미지

매직블럭

작은 지식들 그리고 기억 한조각

트랙백 0개, 댓글 0개가 달렸습니다

댓글을 달아 주세요

  • «
  • 1
  • 2
  • 3
  • »

카테고리

  • 살다보니.. (414)
    • 주절거림 (3)
    • 취미생활 (36)
      • 지식과 지혜 (3)
      • 풍경이 되어 (4)
      • Memories (17)
      • 엥겔지수를 높여라 (2)
    • mathematics (6)
      • Matrix Computation (2)
      • RandomProcesses (3)
    • English.. (8)
    • Programming (134)
      • C, C++, MFC (51)
      • C# (1)
      • OpenCV (17)
      • Python (47)
      • Git, Docker (3)
      • Matlab (4)
      • Windows (3)
      • Kinect V2 (2)
      • 기타 etc. (6)
    • 전공관련 (73)
      • Algorithm (6)
      • Deep Learning (49)
      • 실습 프로그램 (4)
      • 주워들은 용어정리 (8)
      • 기타 etc. (6)
    • Computer (104)
      • Utility (21)
      • Windows (24)
      • Ubuntu, Linux (55)
      • NAS (2)
      • Embedded, Mobile (2)
    • IT, Device (41)
      • 제품 사용기, 개봉기 (14)
      • 스마트 체험단 신청 (27)
    • Wish List (3)
    • TISTORY TIP (5)
    • 미분류. 수정중 (1)

태그목록

  • review
  • SVM
  • 딥러닝
  • 매트랩
  • DSLR
  • 스마트체험단
  • portugal
  • Convolutional Neural Networks
  • LIBSVM
  • function
  • matlab
  • 일본
  • 큐슈
  • random variable
  • Computer Tip
  • Deep Learning
  • ReadString
  • CStdioFile
  • 크롬
  • utility
  • DeepLearning
  • 포르투갈
  • 에누리닷컴
  • ColorMeRad
  • matlab function
  • 매트랩 함수
  • 갤럭시노트3
  • 칼로리 대폭발
  • 오봉자싸롱
  • 후쿠오카

달력

«   2022/06   »
일 월 화 수 목 금 토
      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    
06-25 11:02

LATEST FROM OUR BLOG

  • 골뱅이 연산자의 의미 (행렬곱)..
  • 프린터 용지 부족 문제를 해⋯.
  • [MXNet] 데이터 리스트를 만⋯.
  • 예쁘게 출력하자 pprint - pr⋯.
  • 작업표시줄 미리보기를 리스⋯.
  • 이미지 실제 파일 포맷 확인하기.
  • 알리 등 해외배송 배송상태를⋯.
  • 티스토리 코드블럭 내용을 복⋯.
  • warning 을 on/off 하자.
  • windows 10 파일 선택, 파일⋯.
RSS 구독하기

BLOG VISITORS

  • Total : 1,130,083
  • Today : 44
  • Yesterday : 378

Copyright © 2015 Socialdev. All Rights Reserved.

티스토리툴바