안녕하세요. 지난 포스팅의 넘파이 알고 쓰자 - 넘파이의 원소 제거 및 추가(delete, add)에서는 넘파이 원소를 제거하거나 추가하는 다양한 방법에 대해서 알아보았습니다. 오늘 포스팅에서는 조금 특별한 routine 함수를 소개해드릴려고 합니다. 이는 영상 처리에서도 굉장히 많이 쓰이는 함수 중에 하나인 flip과 관련된 함수들입니다. 그리고 그와 못지않게 중요한 roll 함수와 rot90 함수에 대해서 소개하도록 하겠습니다. 1. numpy.flip(m, axis=None) 이 함수는 뒤집는(flip) 함수입니다. 말 그대로이죠. 영상 처리에서 뒤집기 연산은 크게 2가지입니다. 수직축을 중심으로 뒤집는 vertical flip, 그리고 수평축을 중심으로 뒤집는 horizontal flip이 있습니..
안녕하세요. 이전 포스팅의 넘파이 알고 쓰자 - 배열 복붙하기(tiling)에서 동일한 배열을 여러번 반복해서 쓰는 tile 함수와 repeat 함수에 대해서 알아보았습니다. 그 결과도 조금씩 달랐죠. 오늘 포스팅에서는 넘파이의 원소를 직접 제거, 추가하는 함수들에 대해서 알아보도록 하겠습니다. 1. np.delete(arr, obj, axis=None) 이 함수는 생각보다 직관적인 함수입니다. 일단 "delete"는 삭제한다는 의미를 가지고 있습니다. 즉, 이 함수는 요소를 삭제하는 함수일 거 같습니다. 그리고 arr은 삭제할 배열, obj는 몇 번째를 삭제할 것인지, axis는 어느 축에서 삭제할 것인지입니다. 간단한 예제를 보도록 하겠습니다. arr = np.array([[1,2,3,4], [5,6..
안녕하세요. 지난 포스팅 넘파이 알고 쓰자 - split 에서는 넘파이 객체를 다양한 방식으로 쪼개는 방법에 대해서 알아보았습니다. 오늘은 1개의 배열이 있을 때 그 배열을 복사하고 붙혀넣는 방법에 대해서 알아보도록 하겠습니다. 일전에 배운 concatenate, stack과 유사한 기능처럼 보이지만 자세히 보면 전혀다른 기능입니다. 1. numpy.tile(A, reps) "A"는 임의의 shape을 가진 배열입니다. "reps"는 조금 이해하기 어렵습니다. 간단하게 설명하게 이 인자는 어떤식으로 A 배열을 복사해서 붙혀넣을 것인지에 대한 인자입니다. 튜플이나 리스트를 넘겨주면 됩니다. 직접 예제를 통해서 보도록 하겠습니다. 먼저, 제일 간단한 1차원 배열부터 보도록 하겠습니다. a = np.array..
안녕하세요. 지난 포스팅의 넘파이 알고 쓰자 - stack, hstack, vstack, dstack, column_stack에서 concatenate 함수와 유사한 기능을 하는 넘파이 객체들을 합치는 함수들에 대해서 알아보았습니다. 오늘은 넘파이 객체를 쪼개는 함수들에 대해서 알아보도록 하겠습니다. 1. np.split(ary, indices_or_sections, axis=0) "ary" : 넘파이 객체로 쪼갤 배열입니다. "indices_or_sections" : 만약 이 인수가 정수형 N이라면 쪼개지는 배열이 N개의 동일한 값을 가집니다. 만약, 나누는 것이 불가능하다면 오류가 발생합니다. 만약, 이 인수가 정렬된 1차원 배열이라면 배열의 요소값을 기준으로 값을 나눕니다. "axis" : 나눌 방..
안녕하세요. 지난 포스팅의 넘파이 알고 쓰자 - concatenate에 이어서 다른 합치는 함수들에 대해서 알아보도록 하겠습니다. 혹시, 이전 포스팅을 보지 않으신 분은 꼭!! 보고 와주시는 것을 추천드립니다. 오늘 알아볼 함수들 전부 유사한 방식이기 때문에 보고 오시면 굉장히 수월하게 이해하실 수 있습니다. 1. np.stack(arrays, axis=0) 이 함수는 concatenate 함수에 비해서 제약이 많은 함수입니다. concatenate 함수는 합칠 axis를 제외한 shape 값을 제외하고 일치하면 되지만 stack 함수는 그런거 필요없이 합치려는 배열들의 shape이 전부 동일해야합니다. a = np.array([[1, 2], [3, 4]]) # a.shape=(2, 2) b = np.a..
안녕하세요. 지난 포스팅의 넘파이 알고 쓰자 - Random Module에서는 넘파이에서 자주 사용되는 랜덤 모듈에 대해서 알아보았습니다. 오늘 포스팅에서는 2개 이상의 넘파이 객체를 합치는 방법에 대해서 알아보겠습니다. 합치는 함수의 종류가 굉장히 많기 때문에 이번 포스팅에서는 가장 많이 쓰이는 concatenate에서 넘파이 객체 합치기의 기본 원리와 사용 방법에 대해서 설명하고 다음 포스팅에서 다른 합치는 함수들에 대해서 정리해보겠습니다. np.concatenate((a1, a2, ...), axis=0) Parameters 1). (a1, a2, ...) : a1, a2, ... 들은 각각 넘파이 객체입니다. 이들을 합치기 위해서는 각 객체의 합칠 axis의 shape을 제외하고 나머지 shape..
안녕하세요. 지난 포스팅의 넘파이 알고 쓰자 - 브로드캐스팅에서는 넘파이 객체의 핵심 개념인 브로드캐스팅에 대해서 알아보았습니다. 오늘 포스팅에서는 넘파이 알고 쓰자 - 넘파이 객체 선언의 마지막에 간단하게 설명하고 넘어갔던 랜덤 모듈에 대해서 더 자세하게 설명하도록 하겠습니다. 넘파이의 랜덤 모듈에서는 크게 4가지의 기능으로 나눌 수 있습니다. 각각 랜덤 데이터 추출(Simple Random Data), 순서 바꾸기(Permutation), 확률 분포 생성(Distribution Generator), 랜덤 생성자(Random Generator)입니다. 1. 랜덤 데이터 추출(Simple Random Data) 넘파이에서는 특정 확률 분포를 따르는 넘파이 객체를 생성하는 함수를 보유하고 있습니다. 넘파이..
안녕하세요. 지난 포스팅의 넘파이 알고 쓰자 - 넘파이 인덱싱과 슬라이싱에서는 기존의 파이썬에서 제공하는 인덱싱, 슬라이싱과 크게 다르지 않다는 것을 보았습니다. 오늘은 넘파이의 가장 핵심 개념 중 하나인 브로드캐스팅에 대해서 알아보도록 하겠습니다. 브로드캐스팅(Broadcasting)은 "흩뿌리다"라는 의미를 가지고 있습니다. 넘파이에서 대체 뭘 흩뿌린다는 걸까요? 이것은 넘파이에서 지원하는 가장 강력한 기능 중에 하나로 서로 다른 모양의 넘파이 배열이 특정 조건을 만족하면 연산이 가능하게 만들어줍니다. 그런데 넘파이 알고 쓰자[2].넘파이 기본 연산에서는 넘파이 배열의 모양이 달랐지만 계산이 불가능했습니다. 이것은 방금 말한 두 배열이 특정 조건을 만족하지 않았기 때문에 오류가 발생한 것입니다. a ..