반응형

Study 152

python에서 list 또는 numpy.array 변수의 값이 같은지 비교하는 방법

문제의 정의 파이썬에서 list 또는 numpy.array 타입의 변수를 비교해야 할 때가 있음 numpy.array의 경우 == 연산자를 통해 직접 비교를 시도하면 다음과 같은 에러를 만나기도 함 Exception has occurred: ValueError The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()... 문제 해결 방법 list의 경우 == 연산자를 사용할 수도 있고 all과 zip의 조합 그리고 collections module을 사용할 수 있음 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 ..

Study/Python 2023.08.25

지수표현 숫자를 python에서 쉽게 읽어드리고 다루기

문제의 정의 지수표현으로 된 숫자들을 입력받을 때가 있음 지수표현이 있어 처리하는 것이 귀찮음 (1e-3와 같이...) 해결 방법 python numpy를 통해 쉽게 읽어드릴 수 있음 numpy.array()를 통해 리스트 형식으로 조합된 지수표현 숫자들 혹은 단일 지수표현 숫자를 읽어드릴 수 있음 또한 np.set_printoptions(precision=5, suppress=True) 처리하는 자릿수를 제한하여 다룰 수 있기도 함 여기서 precsion은 처리할 숫자의 자릿수를 말하며 5인 경우 소숫점 5째자리까지 표기하고 다룸을 의미 1 2 3 4 5 6 7 8 9 10 import numpy as np np.set_printoptions(precision=5, suppress=True) # Num..

Study/Python 2023.08.24

python 숫자 표기에서 e없이 출력하는 방법

문제의 정의 간단하게 소숫점 자리를 가지는 여러 숫자들을 확인해야 할 때가 있음 파이썬 과학적 표기법(지수 표현)이라는 이름으로 e가 붙어서 표현될 때가 있음 이는 빠르게 숫자를 확인하는데 어려움을 줌 1 2 3 4 # 자릿수가 많은 수 출력 num = 0.000004138413513684351 print(num) # 4.138413513684351e-06로 출력됨 cs 문제 해결 방법 print의 string format을 사용할 수 있음 "{:.8f}" 해당 부분의 숫자는 표기할 자릿수를 나타냄 1 2 3 4 5 6 7 8 9 10 # Numbers... number1 = 0.000004138413513684351 number2 = 1e-3 # Formatting without scientific n..

Study/Python 2023.08.24

변수 값을 복사하여 새로 만들기 (deepcopy)

문제의 정의 변수를 그냥 할당하여 사용하는 경우 메모리의 값이 같이 참조되어 변수의 값들이 모두 변함 이를 해결하기 위해 변수의 값을 완전히 복사한 새로운 객체를 만드는 방법이 필요함 아래의 예제와 같이 실행하면 모든 딕셔너리 변수의 값이 변함 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 # Define a nested dictionary original_dict = { 'key1': 1, 'key2': [2, 3, 4], 'key3': { 'inner_key1': 'a', 'inner_key2': 'b' } } # Perform a copy new_copy_dict = original_dict # Modify the copy new_c..

Study/Python 2023.08.24

EtherCAT(Ethernet for Control Automation Technology) 통신 : 이더켓; 제어 자동화 기술용 이더넷

EtherCAT (Ethernet for Control Automation Technology) EtherCAT은 산업 자동화 및 제어 애플리케이션에서 널리 사용되는 고성능 실시간 통신 프로토콜 Beckhoff Automation에서 개발했으며 현재 EtherCAT Technology Group에서 유지 관리하는 개방형 표준 이더캣은 이더넷 기술을 기반으로 하며 표준 이더넷 하드웨어와 케이블을 사용하므로 기존 이더넷 네트워크에 쉽게 통합할 수 있음 하지만 기존 이더넷과 달리 EtherCAT은 짧은 지연 시간으로 고속 통신을 가능하게 하는 고유한 "processing on the fly(즉시 처리)" 기술을 사용 EtherCAT 네트워크에서 네트워크의 각 장치는 데이지 체인 구성으로 연결되며, 각 장치는 ..

Study/Network 2023.05.15

CAN(Controller Area Network) 통신에 대한 간단한 설명 그리고 IP와의 비교

CAN(Controller Area Network) 통신 CAN 통신은 자동차, 산업 자동화 및 의료 장비를 포함한 다양한 애플리케이션에서 널리 사용되는 통신 프로토콜 CAN은 여러 노드가 단일 버스를 통해 서로 통신할 수 있는 메시지 기반 프로토콜 각 노드에는 고유 식별자가 있어 특정 노드에 메시지를 선택적으로 전달할 수 있음 CAN은 차동 신호(differential signaling)를 사용하여 장거리에서 안정적인 데이터 전송을 제공하므로 잡음이 많은 환경에서 사용하기에 적합 CAN 통신은 분산 시스템에서 여러 노드를 상호 연결하기 위한 안정적이고 확장 가능하며 비용 효율적인 방법 CAN 네트워크는 다음과 같은 다양한 장점을 제공 높은 신뢰성 : CAN은 차동 신호를 사용하여 장거리에서 안정적인 데..

Study/Network 2023.05.15

build(빌드), make(메이크) 그리고 cmake에 대한 간략 설명

build 소스 코드를 컴파일하고 링크하고 필요한 모든 라이브러리를 연결하여 실행 가능한 파일을 만드는 것을 포함함 간략하게는 compile과 link를 작업하는 것이라고 볼 수 있음 make 빌드 프로세스를 자동화하는 데 사용할 수 있는 도구 기존 방식 build는 파일 하나만 수정되어도 다 수정하여 비효율적이나, make는 주어진 shell 명령어를 조건에 맞게 실행하는 프로그램으로 어떤 조건으로 실행할지 담겨진 파일인 makefile을 사용 즉, makefile이라는 파일을 통해(자동화!) 소스 코드를 컴파일하고 링크하고 필요한 모든 라이브러리를 연결 build vs. make build : 소스 코드를 실행 파일 또는 라이브러리로 변환하는 프로세스 make : GNU make와 같은 도구를 사용하..

Study/IT & Computer 2023.05.15

컴파일, 컴파일러, 링크 그리고 GNU, G++, GCC 간략 정리

compile source code를 computer가 이해할 수 있게 작업 컴파일은 컴퓨터가 이해할 수 있는 형식으로 고급 프로그래밍 언어의 소스 코드를 변환하는 프로세스 컴파일러는 이 프로세스를 수행하는 프로그램임 컴파일러는 소스 코드를 토큰이라는 작은 단위로 분해함 그런 다음 토큰을 구문 분석하여 문법 오류가 있는지 확인 문법 오류가 없으면 컴파일러는 토큰을 기계어 명령이라는 컴퓨터가 이해할 수 있는 형식으로 변환 마지막으로 컴파일러는 기계어 명령을 오브젝트 파일이라는 파일에 저장함 오브젝트 파일은 링커를 사용하여 실행 파일이라는 하나의 파일로 결합할 수 있음 실행 파일은 컴퓨터에서 실행할 수 있는 프로그램임 Linking (링크, 링킹, 링커 등) 여러 개체 파일을 하나의 실행 파일로 결합하는 프..

Study/IT & Computer 2023.05.15

matplotlib에서 3D view의 axis ratio(비율) 조정하기

해결하고자 하는 문제 python을 통한 matplotlib기반 visualization에서 axis의 ratio를 조절해야할 때가 있음 해결 방법 : set_box_aspect 함수를 사용 set_box_aspect() 함수를 사용하여 플롯의 가로 세로 비율을 설정할 수 있음 이 함수는 x, y, z 축 비율을 나타내는 세 가지 값의 목록을 받음 아래의 예제에서는 현재 코드는 각 축에 대한 데이터 범위의 실제 차이를 반영하도록 종횡비를 설정 실제 데이터 범위와 관계없이 세 축 모두에 대해 종횡비를 동일하게 설정하는 주석 처리된 대체 방법도 포함되어 있음 아래는 예제코드임 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 import matplot..

Study/Python 2023.04.21

list에서 중복 요소를 효율적으로 확인하는 방법

해결하고자 하는 문제 list에서 중복 요소를 효율적으로 확인하는 방법이 필요 해결 방법 : set()를 통한 확인 set()은 내부에 중복되지 않게 데이터 요소(element)를 저장함 또 set() 내부에 요소 존재 여부를 확인할 수 있음 list의 값을 set()에 넣기 전 확인하고 없으면 넣어주는 방법을 통해 효율적으로 확인할 수 있음 예제 코드는 아래와 같음 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 def is_duplicates(lst): seen = set() for item in lst: if item in seen: return True seen.add(item) return False # Example usage: my_list = [1, 2, 3, 4..

Study/Python 2023.04.21
반응형