본문 바로가기

프로그래밍 언어21

Python Numpy - Array 1D, 2D, 3D Numpy의 2D와 3D Array에 대해 자세히 살펴보겠습니다. 2차원 array까지는 익숙한 모양이지만 3차원으로 가면서 기존에 알던 것과는 다르게 진행되는 것을 볼 수 있습니다. 2D array는 (행,열)로 진행됐다면 3D는 (층,행,열) 순서로 진행됩니다. 아래 3D array 이미지를 보면 4층, 3행, 2열로 이루어진 것을 확인할 수 있습니다. 다른 책에서는 3D array를 위와 같이 그리고 있습니다. (a)의 보라색 면을 층으로 보면, 위 이미지에서 층을 눕혔다고 볼 수 있습니다. (a)를 numpy array로 표현하면 아래와 같습니다. 굉장히 헷갈리는 형태가 되는데 (a) 처럼 표현한 이유는 x를 가로, y를 세로, z를 높이로 보고자 했기 때문입니다. >> A = np.array([.. 2023. 1. 22.
Python NumPy (1) Array, Indexing, Sorting NumPy Library? : 수학적 계산 NumPy("Numerical Python") library는 수학적 계산에 사용되는 module들을 모아놓은 대표적인 library로 다양한 함수와 간편한 기능을 제공할 뿐만 아니라 연산실행 속도도 더 빠릅니다. 하지만, NumPy의 array는 동일한 type의 데이터만 담을 수 있다는 특징이 있습니다. NumPy Library? : 수학적 계산 NumPy Array NumPy Array의 색인(Indexing) NumPy Array Sorting NumPy 장점 1) python에서는 float형 수를 정의할 때는 1.0처럼 소수부분을 덧붙여줘야 하지만, Numpy를 사용하면 깔끔하게 정의가 가능합니다. >> import numpy as np >> np.f.. 2023. 1. 22.
Java 8 람다(Lambda) / 스트림(Stream) / double colon(::) 람다 함수란? 람다 함수는 익명 함수(Anonymous functions)를 지칭하는 용어로 함수를 보다 단순하게 표현한다. 함수를 하나의 식(expression)으로 표현한 것으로 함수를 람다식으로 표현하면 메소드의 이름이 없기 때문에 익명 함수(Anonymous Function)의 한 종류라고 볼 수 있다. ! 람다 식의 도입으로 익명 클래스를 생략할 수 있게 하여 boilerplate code를 크게 줄이고 가독성을 향상시켰다. ** 익명 함수(Anonymous functions) : 이름이 없는 함수로, 익명 함수들은 모두 일급 객체이다. ** 일급 객체 : 일급 객체인 함수는 변수처럼 사용이 가능하며 매개변수로 전달이 가능하다. 람다식으로 선언된 함수는 일급 객체이기 때문에 Stream API의.. 2022. 8. 15.
ArrayList와 LinkedList의 차이 / Stringbuilder ArrayList vs LinkedList ArrayList는 메모리주소를 바탕으로 저장된다. 주소를 찾는 계산식(배열의 주소 + n * 데이터 크기)을 사용하여 빠르게 찾을 수 있다. 반면에 LinkedList는 데이터를 순차적으로 저장한다. 특정 데이터를 찾기 위해서는 1번부터 하나씩 찾아야 한다. 10개의 노드가 연결되어 있다면 1번 노드부터 한 칸씩 다 확인을 하며 찾아야 한다. 또한 LinkedList는 지역성(locality of reference) 측면에서도 불리하다. 왜냐면 ArrayList는 데이터를 연속적인 묶음으로 저장하지만 LinkedList는 불연속적으로 저장 후 연결하는 방식이기 때문이다. 당연히 다음 데이터에 대한 주소를 가지고 있다고 하더라도 접근하는데 시간이 걸릴 수 밖에 .. 2022. 8. 14.
자바 HashMap의 구조 / HashTable / LinkedHashMap 자바에서 컬렉션이란 무엇인가? Java Collection Class의 두 가지 주요 root interface는 아래와 같다. 1) Collection interface(java.util.Collection) 2) Map interface(java.util.Map) HashTable 해시 테이블은 효율적인 탐색을 위한 자료구조로서 키(key)를 값(value)에 대응시킨다. 해시 테이블을 구현하는 방법에는 여러 가지가 있으나, 간단하면서 흔하게 사용되는 방식은 연결리스트(linked list)와 해시 코드 함수(hash code function)을 사용하는 것이다. key와 value를 해시 테이블에 넣는 과정은 다음과 같다. 키의 해시 코드를 계산한다. 키의 개수는 무한한데 반해 int의 개수는 유한.. 2022. 8. 14.
자바 동기화 | Synchronized(Monitor), Atomic Type 동기화란 공유 리소스에 대해 여러 쓰레드의 액세스를 제어하는 기능이다. 상호배제란 하나의 프로세스가 공유 자원을 사용할 때 다른 프로세스가 동일한 공유자원에 접근할 수 없도록 통제하는 것이다. Java에서 제공하는 동기화 방법으로는 1) 개체에 Lock을 걸어 상호배제를 할 수 있는 Synchronized(Monitor)와 2) non-locking 방식인 Atomic Type이 있다. 1. Synchronized Mutex 여러 쓰레드를 실행하는 환경에서 자원에 대한 접근을 통제하기 위한 동기화 기법이다. - Boolean type의 Lock변수를 사용한다. 따라서 1개의 공유자원에 대한 접근을 제한한다. - 공유 자원을 사용중인 쓰레드가 있을 때, 다른 쓰레드가 공유 자원에 접근한다면 Blocking.. 2022. 8. 14.
반응형