반응형
반응형

[PYTHON] Python 3.14.0 정식 버전 출시 🐍

 

Python 3.14.0의 정식 버전이 출시되었습니다. 이번 업데이트는 성능 향상과 새로운 기능 추가에 중점을 두었습니다.


주요 기능

  • PEP 779: 자유 스레드 Python (Free-threaded Python) 공식 지원: 여러 스레드에서 Python 코드를 동시에 실행할 수 있어 멀티코어 프로세서를 더 효율적으로 활용할 수 있습니다.
  • PEP 649: 어노테이션 평가 지연: 타입 힌트와 같은 어노테이션의 평가를 나중으로 미루어 시작 시간을 단축합니다.
  • PEP 750: 템플릿 문자열 리터럴 (t-strings): f-string과 유사하지만 더 안전하고 유연한 새로운 문자열 형식입니다.
  • PEP 734: stdlib에 다중 인터프리터: 하나의 프로세스에서 여러 개의 독립적인 Python 인터프리터를 실행할 수 있습니다.
  • PEP 784: 새로운 compression.zstd 모듈: Zstandard 압축 알고리즘을 지원하여 더 빠르고 효율적인 데이터 압축이 가능합니다.
  • PyREPL의 구문 강조 표시 및 색상 지원: unittest, argparse, json, calendar CLI에서 색상을 지원하여 가독성을 높였습니다.

주요 변경 사항

  • PEP 761: 릴리스 아티팩트에 대한 PGP 서명 중단: 더 이상 PGP 서명을 제공하지 않고 Sigstore 사용을 권장합니다.
  • 실험적인 JIT 컴파일러 포함: 공식 macOS 및 Windows 릴리스 바이너리에 실험적인 JIT 컴파일러가 포함되어 성능이 향상될 수 있습니다.
  • 공식 Android 바이너리 릴리스: 이제 Android에서도 공식적으로 Python을 사용할 수 있습니다.
  • 새로운 Windows 설치 관리자: Windows Store 또는 다운로드 페이지에서 설치할 수 있는 새로운 설치 관리자로 교체됩니다.

https://www.python.org/downloads/release/python-3140/

 

Python Release Python 3.14.0

The official home of the Python Programming Language

www.python.org

 

 

반응형
반응형

구글이 팬데믹 시기에 도입했던 ‘어디서나 근무(Work from Anywhere·WFA)’ 제도를 사실상 폐지 수준으로 축소했다. 이로써 미국 빅테크 전반의 사무실 복귀 흐름이 한층 가속화되고 있다.

 

미 CNBC에 따르면 구글은 최근 내부 문서를 통해 ‘WFA 제도’를 개정하고, 직원이 한 주 중 단 하루만 원격으로 일하더라도 ‘1주일 사용‘으로 간주한다고 통보했다. 기존에는 연간 4주 한도 내에서 원하는 장소에서 근무할 수 있었지만, 이번 조치로 사실상 활용이 크게 제한된 셈이다. 문서에는 “표준 근무 주 중 1일 또는 5일을 원격으로 일하더라도 WFA 잔여 주에서 1주가 차감된다”라는 내용이 담겼다. 이 문서는 여름부터 직원들에게 공지됐으며 최근 정식 시행에 들어간 것으로 알려졌다.

이번 개정은 기본적으로 주 3일 출근, 주 2일 재택을 허용하는 기존 ‘하이브리드 근무제’와는 별개다. WFA는 본사나 집이 아닌 다른 지역(타 도시나 타국 등)에서 일하는 것을 뜻한다. 다만 데이터센터나 현장 근무가 필수인 일부 조직은 적용 대상에서 제외된다.

구글은 올해 4월에도 일부 부서에 원격근무자 해고 가능성을 통보하고, 사무실 반경 50마일(약 80km) 내에 거주하면서도 출근하지 않는 직원에게는 자발적 퇴직(바이아웃) 프로그램을 제안한 바 있다. 당시 구글은 “대면 협업은 혁신과 복잡한 문제 해결의 핵심”이라고 강조했다. 이번 정책에는 해외 체류 중 WFA 근무를 금지하는 조항도 포함됐다. 회사는 “국가 간 근로는 법적·재정적 문제를 초래할 수 있다”라며 타국 구글 오피스에서 일하는 것도 제한했다.

이러한 변화는 빅테크 기업의 전반적인 흐름과 일치한다. 애플은 주 3일 출근을 의무화하고 사원증(배지) 출입 기록으로 출근 여부를 관리하고 있다. 메타는 지난해 9월 같은 기준을 도입하며 불이행 시 성과 평가 불이익이나 해고로 이어질 수 있다고 경고했다. 아마존은 ‘커피배징(짧은 방문으로 출근 처리)’을 단속하며 주 5일 출근 확대를 추진 중이다. 마이크로소프트 역시 대부분의 직원에게 주 3일 출근을 권장하는 ‘표준 근무 기준’을 정착시켰다.

켈시 샤메트 미국 고용 전문 변호사는 포춘과 인터뷰에서 “팬데믹 이후 직원들이 기대해온 유연 근무 환경이 줄어드는 것은 사기 저하와 이직률 증가로 이어질 수 있다”라며 “특히 높은 성과를 내는 인재일수록 더 유연한 근무 환경을 찾아 떠날 가능성이 크다”라고 말했다.

이러한 조치가 단순한 생산성 강화 목적을 넘어 인력 재편 전략의 일환이라는 분석도 나온다. 미국 연방준비제도(Fed)의 ‘베이지북’ 보고서에 따르면 일부 기업 경영진은 “RTO(사무실 복귀) 정책이 공식 해고 없이 인력 감축을 촉진했다”고 인정하기도 했다. 자발적 퇴사자는 해고수당이나 의료보험 혜택을 받지 못하기 때문에 이를 두고 ‘값싼 해고(layoffs on the cheap)’라는 지적이 나오기도 한다.

이 같은 기조는 포춘 100대 기업 전반으로 확산 중이다. 완전 출근을 요구하는 기업 비율은 2023년 5%에서 2025년 50% 이상으로 늘었으며 연말까지 30%가 주 5일 출근제를 시행할 것으로 전망된다.

 

다만 에어비앤비, 스포티파이, 핀터레스트 등 일부 기업은 여전히 유연한 원격근무 정책을 유지하며 차별화를 꾀하고 있다. 에어비앤비는 ‘어디서나 생활하고 일하기(Live and Work Anywhere)’ 정책을 유지 중이며 스포티파이는 직원과 매니저 협의로 근무지를 자유롭게 선택하도록 하고 있다.

 

https://www.mk.co.kr/news/it/11438931

반응형
반응형

 

[PYTHON] ASCII 배너 생성 프로그램 (Python Code)

 

 

 

 

 

 

"""
                 __  __
    ____  __  __/ /_/ /_  ____  ____
   / __ \/ / / / __/ __ \/ __ \/ __ \
  / /_/ / /_/ / /_/ / / / /_/ / / / /
 / .___/\__, /\__/_/ /_/\____/_/ /_/
/_/    /____/

==================================================
사용된 폰트: digital
--------------------------------------------------
+-+-+-+-+-+-+
|p|y|t|h|o|n|
+-+-+-+-+-+-+


    pyfiglet 라이브러리 설치
    ASCII 배너 생성 프로그램 (Python Code)
    
    pip install pyfiglet
    
    
    파이썬에서 FIGlet 스타일의 ASCII 배너(Banner)를 생성하려면 pyfiglet 라이브러리를 사용하면 됩니다. pyfiglet은 C로 작성된 오리지널 FIGlet 프로그램의 파이썬 구현체입니다.

"""

import pyfiglet
import sys

def generate_ascii_banner(text, font_name='slant'):
    """
    주어진 텍스트와 폰트 이름으로 ASCII 배너를 생성하고 출력합니다.
    
    :param text: ASCII 아트로 변환할 문자열
    :param font_name: 사용할 pyfiglet 폰트 이름 (기본값: 'slant')
    """
    try:
        # pyfiglet Figlet 객체 생성 및 폰트 설정
        fig = pyfiglet.Figlet(font=font_name)
        
        # 텍스트를 ASCII 아트로 변환
        banner = fig.renderText(text)
        
        # 결과 출력
        print("=" * 50)
        print(f"사용된 폰트: {font_name}")
        print("-" * 50)
        print(banner)
        print("=" * 50)
        
    except pyfiglet.FigletError:
        # 존재하지 않는 폰트 이름을 입력했을 때 발생하는 오류 처리
        print(f"\n[오류] '{font_name}' 폰트는 존재하지 않습니다.")
        print("사용 가능한 폰트 목록을 확인해주세요.")
    except Exception as e:
        print(f"\n[예외 발생] 예상치 못한 오류가 발생했습니다: {e}")


# --- 메인 실행 로직 ---
if __name__ == "__main__":
    # 사용자로부터 입력 텍스트 받기
    input_text = input("ASCII 배너로 만들 텍스트를 입력하세요: ")
    
    if not input_text:
        print("입력된 텍스트가 없습니다. 프로그램을 종료합니다.")
        sys.exit()

    # (선택 사항) 다양한 폰트로 테스트
    print("\n--- 다양한 폰트로 테스트 ---")
    
    # 1. 'slant' 폰트 (기본값)
    generate_ascii_banner(input_text, 'slant')
    
    # 2. 'big' 폰트
    generate_ascii_banner(input_text, 'big')
    
    # 3. 'digital' 폰트
    generate_ascii_banner(input_text, 'digital')
    
    # 4. 'banner3-D' 폰트
    generate_ascii_banner(input_text, 'banner3-D')

    # 모든 사용 가능한 폰트 목록을 보려면 다음 코드를 사용하세요.
    # print("\n--- 사용 가능한 모든 폰트 목록 ---")
    # print(pyfiglet.Figlet().getFonts())
반응형
반응형

[python]  Faker 라이브러리로 Dummy 데이터 만들기

 

pip install Faker
    
    1.faker는 이름, 주소, 이메일, 전화번호 등 다양한 종류의 가짜 데이터를 만들어주는 파이썬 패키지입니다. 
       Faker 객체를 생성하고, 해당 객체가 제공하는 다양한 메소드를 호출해 원하는 형식의 데이터를 얻을 수 있어요.
    2.Faker는 국가별 언어 설정을 지원해요. 예를 들어, Faker('ko_KR')를 사용하면 한국어 이름, 주소, 주민등록번호 등 

       한국 특화된 데이터를 생성할 수 있습니다.

 

 

""" pip install Faker 

"""

from faker import Faker

# Faker 객체 생성
fake = Faker('ko_KR') # 'ko_KR'은 한국어 더미 데이터를 생성하도록 설정합니다.

# 기본 정보 더미 데이터 생성
print("--- 기본 정보 ---")
print("이름:", fake.name())
print("주소:", fake.address())
print("전화번호:", fake.phone_number())
print("이메일:", fake.email())
print("회사:", fake.company())
print("직업:", fake.job())
print("생일:", fake.date_of_birth())
print("-" * 20)

# 텍스트 및 문장 더미 데이터
print("--- 텍스트 ---")
print("문장:", fake.sentence())
print("단락:", fake.paragraph())
print("텍스트:", fake.text())
print("-" * 20)

# 숫자 및 날짜/시간 더미 데이터
print("--- 숫자/시간 ---")
print("정수:", fake.random_int(min=1, max=100))
print("날짜:", fake.date_this_year())
print("시간:", fake.time())
print("-" * 20)

# 금융 정보 더미 데이터
print("--- 금융 정보 ---")
print("신용카드 번호:", fake.credit_card_number())
print("통화 코드:", fake.currency_code())
print("-" * 20)

# 한국어(ko_KR)에서만 제공하는 특별한 더미 데이터
print("--- 한국어 특화 ---")
print("주민등록번호:", fake.ssn())
print("우편번호:", fake.postcode())
print("-" * 20)

# 여러 개의 데이터 생성
print("--- 사용자 목록 ---")
for _ in range(3):
    print({
        '이름': fake.name(),
        '이메일': fake.email(),
        '주소': fake.address(),
        '나이': fake.random_int(min=20, max=60),
    })
print("-" * 20)
반응형
반응형

왜 우리는 악순환에 빠지는가 (behavioralscientist.org)

 

 

 

https://behavioralscientist.org/why-we-spiral/

 

 

  • 직장에서 작은 상황이 소속감이나 능력에 대한 의문을 불러일으키면, 생각이 꼬리를 물며 부정적 나선형으로 이어질 수 있음
  • 저자는 이를 핵심 질문(core questions), 해석(construal), 석회화(calcification) 의 3단계로 설명하며, 불안과 자기 의심이 어떻게 현실을 왜곡하는지 보여줌
  • 반복되는 부정적 해석은 결국 자기 파괴적 행동을 낳고, 이는 관계·성과·건강까지 악영향을 미침
  • 하지만 이러한 과정은 되돌릴 수 있으며, 지혜로운 개입(wise interventions) 을 통해 작은 계기로도 긍정적 나선형을 촉발할 수 있음
  • 결국 중요한 것은 작은 사건 속에 숨어 있는 “나는 속해 있는가?” “나는 충분한가?” 라는 근본적 질문을 이해하고, 이를 긍정적으로 다루는 것임

상황의 차이: 시니어 직원 vs 신입 직원

  • 당신이 팀의 시니어라고 가정하고, 주간 Zoom 회의에 12분 늦게 들어옴
    • 오디오 연결 후, 오랜 친구가 “왔구나! 시간을 내줘서 고마워”라고 농담 섞인 인사를 함
    • 당신은 웃으며 아침 출근길 교통 체증이나 아이 등교 문제 같은 이유를 설명함
    • 분위기는 자연스럽게 넘어가고, 대화는 업무로 이어지며 당신은 집중해서 일을 이어감
  • 하지만 당신이 아직 적응 중인 신입 직원이라면 상황은 다르게 느껴짐
    • 동일하게 12분 늦게 Zoom에 들어왔을 때, 이번엔 상사의 목소리가 들림
    • “왔구나! 시간을 내줘서 고마워”라는 말에 동료 몇 명이 웃음
    • 당신은 교통이나 아침 사정에 대한 변명을 할까 고민하지만, 대화는 이미 지나가버림

마음속에서 이어지는 생각

  • 대화는 넘어갔지만, 당신의 마음은 멈추지 않음
  • 속으로 질문이 이어짐
    • “상사의 말투에 비꼼이 있었던 걸까?”
    • “내가 접속하기 전에 나에 대해 얘기하고 있었던 걸까?”
    • “내가 여기 어울리는 사람이 맞을까?”
    • “나는 이 일을 잘할 수 있는 사람일까?”
  • 이런 질문은 즉각적이고 무의식적으로 떠오르며, 소속감·가치감·자존감을 위협함
  • 억누르려 하지만 쉽게 사라지지 않고, 한 번 촉발되면 이후의 상황마다 증거가 쏟아져 들어오는 것처럼 느껴짐

부정적 신호의 누적

  • 회의 도중 채팅창에서 내부자 농담이 오가지만 당신은 이해하지 못함 → “나는 여기 속하지 않는구나”라는 생각이 듦
  • 발언 중 동료가 눈을 굴리는 반응을 보임 → “그들은 나를 존중하지 않아”라고 느껴짐
  • 상사가 회의 내내 당신을 무시하는 듯함 → “아무도 나를 보지 않아”라는 결론에 도달함
  • 이러한 생각은 완전히 의식적이지 않더라도, 회의가 끝날 즈음에는 업무 의욕이 크게 줄어듦
  • “내가 뭘 확인해야 했지?”라는 의문이 남으며 집중력이 흐려짐

나선의 가속

  • 회의가 끝난 뒤, 무심코 온라인을 서성이던 중, 아까 눈을 굴린 동료에게서 메시지가 옴
    • “괜찮아? 회의 때 좀 집중을 못 한 것 같았어”
  • 당신은 답장을 하지 않고 무시하지만, 머릿속은 다양한 답변 시나리오로 가득 찼음
    • 소극적·수동 공격적인 답변에서부터, 커리어에 치명적인 반응까지 상상함
  • 결국 휴대폰을 집어 들고, “무엇을 답장할까”라는 고민에 빠짐

자기 패배적 나선의 구조

  • 1. 근본적 질문 등장
    • 정체성, 소속감, 역량에 대한 질문이 배경에 깔려 있음
    • “나는 새로 온 사람, 성공하고 싶고 인정받고 싶지만 과연 그럴 수 있을까?”
  • 2. 부정적 사건 발생
    • 상사의 약간의 비꼼 섞인 말투
  • 3. 질문의 촉발
    • 애매한 상황에서 부정적으로 해석하며 증거를 모으기 시작
    • 과제에 집중하지 못하고, 비관적 가설이 강화
  • 4. 부정적 행동으로 이어짐
    • 예: 동료에게 비꼬는 답장을 보냄
    • 며칠 뒤, 그 동료가 당신에게 냉담한 태도를 보이게 됨
  • 이렇게 작은 순간들이 쌓이며, 자기 패배적 나선형이 점점 속도를 높여감

나선의 장기적 영향

  • 시간이 지나면서 상황은 더욱 악화됨
  • 동료와의 관계가 끊기고, 상사가 준 과제를 망쳐 신뢰를 잃음
  • 1년 뒤 새로운 직장에 가더라도, 동료와의 긴장 관계가 다시 나타남
  • “이 이야기는 어떻게 끝날까? 내가 이 상황을 통제할 수 있을까?”라는 질문이 따라옴

이 상황이 통제 가능할까?

  • 대답은 “그렇다” 임. 누구나 이 상황에 대한 선택권을 가지고 있음
  • 부정적 나선이나 피드백 루프는 피할 수 없는 운명이 아님
  • 오히려 작은 노력으로 초기에 끊어내어 장기적 재앙을 예방할 수 있음
  • 더 나아가, 같은 과정이 긍정적 나선으로 작동해 행복·성공·성장을 촉진할 수도 있음
  • 결국 같은 메커니즘이 우리를 끌어내릴 수도, 끌어올릴 수도 있음

나선을 이해하는 세 가지 C

  • 앞서 설명한 1~4 단계 과정을 더 명확히 하기 위해, 저자는 세 가지 핵심 개념을 제시함
  • 이를 “세 가지 C” 라 부르며, 나선이 긍정적일 수도 부정적일 수도 있는 과정을 설명함
    • Core questions (핵심 질문)
    • Construal (해석)
    • Calcification (석회화)
  • Core questions (핵심 질문)
    • 누구나 삶 속에서 마주하는 근본적 질문들:
      • “나는 누구인가?”
      • “나는 속하는가?”
      • “나는 충분한가?”
    • 이 질문들은 자아와 삶을 정의하는 기준이 됨
      • 어떤 관계를 맺을지, 무엇을 성취할지, 어떤 사람이 될지를 결정함
    • 한동안은 안정적일 수 있지만, 중요한 전환점에서 다시 떠올라 불안과 집착을 일으킴
    • 이런 질문이 미해결 상태일 때, 세상을 보는 렌즈처럼 작동하며 인식과 행동에 영향을 줌
  • Construal (해석)
    • 우리는 세상을 있는 그대로 보지 않고, 머릿속에 이미 있는 정보와 믿음을 바탕으로 해석함
    • 중요하다고 느끼는 주제만 집중하고, 다른 신호는 걸러냄
    • 사례: 한 교수의 수업 실험
      • 반을 둘로 나누고, 한쪽엔 여행과 리비아 이야기를, 다른 쪽엔 신발 사이즈 이야기를 들려줌
      • 이후 “한 단어를 적으라” 하자, 전자는 “Tripoli”, 후자는 “Triple E”라고 적음
    • 사회적 상황에서도 마찬가지로, 위험이나 위협으로 느껴지는 신호에 집중함
      • 숲속에서 호랑이가 있다고 믿으면 작은 소리도 모두 호랑이로 해석
      • 직장에서 새로 온 사람은 상사의 말투에서 비꼼을 듣지만, 오래된 친구였다면 그렇지 않음
    • 핵심 질문이 미해결이면, 우리는 작은 사건에서도 이를 의심을 입증하는 증거로 여김
      • 결국 확증 편향에 사로잡혀, 사소한 단서도 기존 불안을 강화하는 증거로 해석함
  • Calcification (석회화)
    • 부정적 생각과 감정이 고착화되는 과정임
    • 종종 자신의 행동이 원인이 되어 더 굳어짐
      • 예: 데이트가 잘 안 됐을 때 “나는 사랑받을 수 없어”라고 생각하면, 다음 만남도 실패로 이어짐
    • 이러한 과정이 반복되면, 낭만적 관계, 학업, 건강, 가족관계 전반에서 부정적 나선이 발생함
      • 시험 실패 → “나는 못한다” → 수업 포기
      • 치료副작용 → 병이 더 심각하다고 해석 → 치료 회피
      • 아이와 싸움 → “나는 나쁜 부모”라는 낙인 → 다음 번엔 더 심한 분노 표출
    • 이런 자기 파괴적 루프가 성취·건강·관계·삶의 행복을 조금씩 갉아먹음

Spiraling up – 긍정적 나선

  • 우리의 어려움은 부분적으로는 해석과 추론에서 비롯되므로, 이를 바꾸면 기회가 생김
  • 연구자들은 사람들이 양갈래로 갈 수 있는 초기 순간을 포착해, 더 나은 사고 방식을 제안함
  • 이를 통해 부정적 나선이 아닌 긍정적 나선으로 방향을 틀 수 있음
  • 지혜로운 개입(Wise interventions)
    • 핵심 질문에 더 나은 답을 제공하는 작은 개입이 큰 변화를 만듦
    • 사례:
      •  21분 개입으로 1년 뒤 부부 관계가 개선됨
      • 한 장의 편지가 청소년을 범죄에서 멀어지게 함
      • 엽서 발송만으로 2년간 자살률을 절반으로 낮춤
      • 대학 신입생의 1시간 소속감 성찰이 10년 뒤 삶의 만족도와 성공을 높임
    • 저자는 이를 Ordinary Magic(평범한 마법) 이라 부름

부정적 나선은 필연이 아니다. 우리 자신과 타인을 위해, 초기에 끊어낼 수 있는 방법이 있다.

  • 티프빗(Tifbit) – 작은 사실, 큰 이론
    • 저자의 대학 1학년 경험
      • 가을날 자전거를 타고 가다 학생들이 In-N-Out 버거 트럭 앞에 모여 있는 모습을 봄
      • 미시간 출신이라 In-N-Out을 몰랐던 그는, 소외감을 느끼고 혼자 식당으로 향함
      • “버거 때문에 내가 소속되지 않는다고 느끼다니, 우습다”라고 생각했지만, 속마음은 달랐음
    • 이후 형의 연애 실패 경험을 계기로 “티프빗(tiny fact, big theory)”이라는 용어를 만들었음
      • 사소한 사실이 큰 불안과 의문을 촉발하는 현상
      • 실제로는 단순한 사건이지만, ‘나는 여기 속하는가?’ ‘나는 친구를 사귈 수 있을까?’ 같은 큰 질문을 드러냄
  • 작은 사건의 의미
    • 겉보기엔 하찮은 경험이라도, 그 밑바닥에는 진짜이자 합리적인 질문이 숨어 있음
    • 작은 계기에 크게 반응하는 것은, 우리를 정의하는 근본적 의문을 드러내는 단서
    • 예: 만약 당시 누군가 “모두 처음엔 외롭다. 심지어 캘리포니아 출신 학생도 새로운 공동체를 찾고 있다”는 말을 해주었다면
      • 그는 줄을 서서 버거를 맛보고, 대화를 나누며 친구를 만들 수 있었을 것

결론

  • 티프빗은 단순한 사실이 아니라, 삶을 정의하는 질문으로 이어지는 실마리
  • 지혜와 친절, 약간의 거리감을 갖고 보면 웃을 수 있지만, 동시에 주의 깊게 다루어야 할 신호
  • 작은 사건을 긍정적으로 해석하면, 더 나은 관계와 경험으로 이어지는 긍정적 나선을 시작할 수 있음
반응형
반응형

voronoi diagram for generative geometry using python

 

파이썬을 사용하여 제너레이티브 지오메트리(generative geometry)를 위한 보로노이 다이어그램(Voronoi diagram)을 생성하는 것은 널리 사용되는 강력한 기법입니다.

 

이 과정은 일련의 무작위 점을 생성한 다음, SciPy와 같은 라이브러리를 사용하여 이 점들에 대한 근접성에 따라 평면을 분할하는 보로노이 다이어그램을 계산하는 것을 포함합니다.

 

이렇게 분할된 공간은 복잡하고 유기적으로 보이는 디자인을 만드는 데 사용될 수 있습니다.

 

 

"""
파이썬을 사용하여 제너레이티브 지오메트리(generative geometry)를 위한 
 보로노이 다이어그램(Voronoi diagram)을 생성하는 것은 널리 사용되는 강력한 기법입니다. 
이 과정은 일련의 무작위 점을 생성한 다음, SciPy와 같은 라이브러리를 사용하여 
 이 점들에 대한 근접성에 따라 평면을 분할하는 보로노이 다이어그램을 계산하는 것을 포함합니다.
이렇게 분할된 공간은 복잡하고 유기적으로 보이는 디자인을 만드는 데 사용될 수 있습니다.
"""

import numpy as np
from scipy.spatial import Voronoi, voronoi_plot_2d
import matplotlib.pyplot as plt

# 1. Generate 20 random 2D points
points = np.random.rand(20, 2)

# 2. Compute the Voronoi diagram
vor = Voronoi(points)

# 3. Plot the diagram
fig = voronoi_plot_2d(vor)
plt.show()

핵심 라이브러리

파이썬에서 보로노이 다이어그램을 생성하고 시각화하려면 주로 다음 라이브러리가 필요합니다:

  • NumPy: 수치 연산을 위해, 특히 점들의 좌표를 생성하고 다루는 데 사용됩니다.
  • SciPy: 핵심 보로노이 다이어그램 계산을 위해. scipy.spatial.Voronoi 클래스가 주요 도구입니다.
  • Matplotlib: 결과 다이어그램을 플롯하고 시각화하는 데 사용됩니다.

기본 보로노이 다이어그램 생성 단계

다음 코드는 이 라이브러리들을 사용한 간단한 예시를 보여줍니다.

  1. 무작위 점 생성: 보로노이 셀의 "씨앗(seeds)" 또는 "생성자(generators)" 역할을 할 일련의 무작위 2D 점을 만듭니다.
  2. 보로노이 다이어그램 계산: 점 집합을 scipy.spatial.Voronoi에 전달합니다. 이 객체는 보로노이 셀의 꼭짓점과 그 관계를 포함하여 다이어그램에 대한 모든 필수 정보를 담고 있습니다.
  3. 다이어그램 플롯: scipy.spatial.voronoi_plot_2d를 사용하여 결과를 시각화합니다. 이 함수는 보로노이 객체를 받아 다이어그램의 선과 꼭짓점을 플롯하며, 종종 원래의 점들이 함께 겹쳐서 표시됩니다.

 

반응형

+ Recent posts