일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 3d
- Front
- REACT
- FineGrained
- classification
- GAN
- 머신러닝
- dl
- ML
- computervision
- 딥러닝
- Meta Learning
- 알고리즘
- SSL
- math
- PRML
- nlp
- clean code
- CV
- nerf
- Depth estimation
- algorithm
- FGVC
- pytorch
- Vision
- Torch
- 자료구조
- Python
- cs
- web
- Today
- Total
목록Python (36)
KalelPark's LAB
itertools 효율적인 루핑을 위한 이터레이터를 만드는 함수이다. 자체적으로 혹은 조합하여 유용하고 빠르고 메모리 효율적인 도구의 핵심 집합을 표준화합니다. 순수 파이썬에서 간결하고 효율적으로 특수화된 도구를 구성할 수 있도록 이터레이터 대수(iterator algebra)를 형성합니다. chain : 여러 iteration을 하나의 순차적인 이터레이터로 합칠 때 사용합니다. it = itertools.chain([1, 2, 3], [4, 5, 6]) for i in it: print(i) print(list(it)) repeat : 한 값을 게속 반복해 내놓고 싶을 때 사용합니다. it = itertools.repeat("안녕", 3) print(list(it)) cycle : 어떤 이터레이터가 원..
매번 까먹어서, 다시 다듬어보고자 한다. torch.gather란? 공식문서에 따르면 차원에 해 정해진 축에 따라 값을 모읍니다. import torch t = torch.tensor([[1, 2], [3, 4]]) torch.gather(t, 1, torch.tensor([[0, 0], [1, 0]])) 즉, 차원에 따라 값을 재배치한다고 이해하면 됩니다. * 코드로 한번 더 이해해보도록 하겠습니다. out[i][j][k] = input[index[i][j][k]][j][k] out[i][j][k] = input[i][index[j][k]][k] out[i][j][k] = input[i][j][index[k]] // 위의 값처럼 indexing이 처리되는 것을 알 수 있습니다. Example> imp..
Comparison, Generator Comparison을 사용하면, 타입을 간결하게 이터레이션하면서 원소로부터 파생되는 데이터 구조를 생성할 수 있습니다. Comparison은 Generator로 확장하는 것이 가능합니다. Generator는 성능을 향상시키고, 메모리 사용량을 줄이고, 코드의 가독성을 향상시킬 수 있습니다. list comparision을 사용하는 경우, map과 filter를 사용하는 대신에, list에서 바로 생성하는 것이 좋습니다. alt = map(lambda x : x ** 2, a) # don't use even_square = [x ** 2 for x in a if x % 2 == 0] # using list comparison print(even_sqaure) Sequ..
Dictionary - 일반적으로, Dictionary의 원소 삽입 순서와 iteration 순서는 일치하지 않는다. 이러한 일이 발생하는 이유는, Dictionary의 구현이 내장 hash와 난수 씨앗값(seed)을 사용하는 해시 테이블 알고리즘이기 때문이다. - 만약 dictionary를 순서에 의존하고 싶다면, 아래와 같은 명령어를 사용하면 됩니다. baby_names = { "cat" : "kitten", "dog" : "puppy" } print(baby_names.keys()) print(baby_names.values()) print(baby_names.items()) print(baby_names.popitem()) 기존 방법에서는, dictionary에서 값을 불러올 때, 순서대로 불러오..
Packing & Unpacking Packing : 인자로 받은 여러개의 값을 하나의 객체로 합쳐서 받을 수 있도록 합니다. tuple은 *를 사용하여, 나타냅니다. 반면에 **의 경우, dictionary로써 사용됩니다. def func(*args): print(args) print(type(args)) // func(1, 2, 3, 4, 5, 6, 'a', 'b') // result // (1, 2, 3, 4, 5, 6, 'a', 'b') // def kwpacking(**kwargs): print(kwargs) print(type(kwargs) // kwpacking(a=1, b=2, c=3) // result // {'a': 1, 'b': 2, 'c': 3} // Unpacking : 함수를 호..
PEP(Python Enhancement Proposal) 8이란? - Python 코드를 어떤 형식으로 작성할지 알려주는 가이드라인이다. * 파이썬 커뮤니티에서 자주 활용되는 방안이기에, 참조하시기 바랍니다. https://peps.python.org/pep-0008/ PEP 8 – Style Guide for Python Code | peps.python.org PEP 8 – Style Guide for Python Code Author: Guido van Rossum , Barry Warsaw , Nick Coghlan Status: Active Type: Process Created: 05-Jul-2001 Post-History: 05-Jul-2001, 01-Aug-2013 Table of Con..
Split란? Split의 경우 데이터당 최대 자료구 N개를 가지게 하는 방법입니다. 만약 원하고자 하는 split_size로 나누고자 하지만, 정확한 size로 나누는 것이 불가능하다면, 마지막 size는 작습니다. Chunk란? chunks의 경우 데이터를 n개로 나누는 방법입니다. chunk의 경우 n개의 그룹을 만드는 것이다. * 쉽게 이해하고자 한다면, chunk는 n개의 그룹을 만드는 것이고, split의 경우 n개로 구성된 그룹을 만드는 것이다.
*args, **kwargs란? Python에서의 *, **는 주소값을 저장하는 의미가 아닙니다. 여러 개의 인수를 받을 때, 키워드 인수를 받을 때 사용하는 표시입니다. *args *args는 *arguments의 줄임말입니다. 즉, 다른 단어를 작성해도 상관없습니다. 이 지시어는 여러 개(복수개)의 인자를 함수로 받고자 할 때 쓰입니다. *의 의미는 메모리 주소를 찾아서 값을 읽어준다는 의미이다. **kwargs kwargs는 keyword argument의 줄임말로 키워드를 제공합니다. **kwargs는 (키워드 = 특정 값) 형태로 함수를 호출할 수 있습니다. 즉, 딕셔너리 형태로 함수 내부로 전달됩니다. class nerf: def __init__(self, purple = 5, role = 5..