산책을 영적으로, 또 지적으로 나아가기 위한 수단으로 여긴 사상가는 니체만이 아니다. 다윈도 집 주변에 정기적으로 산책을 하는 길이 있었고 그 길에 샌드워크라는 이름을 붙였다. 그와 동시대를 살았던 찰스 디킨스 역시 런던의 한적한 밤거리를 걸으며 연재 중인 소설을 구상했다. 스티브 잡스도 걷기가 사람을 더 똑똑하게 만든다는 확신으로 미국 애플 캠퍼스에 산책로와 러닝 트랙을 만들었다.
- 토마스 힐란드 에릭센의 《인생의 의미》 중에서 -
* 옹달샘에도 네 개의 산책길이 있습니다. 용서의 길, 화해의 길, 사랑의 길, 감사의 길. 저도 시시때때로 이 길을 걸으며 고요함을 찾고 아침편지를 쓰고 있습니다. 산책은 몸을 건강하게 할 뿐만 아니라, 생각을 정리하고, 우주의 지혜를 받아들이기에 좋은 습관입니다. 사람을 똑똑하게 만든다고 하니 더 말할 것도 없습니다.
[python] Scatter plot animated using python, ffmpeg
"""
An animated scatter plot can be created using Python's matplotlib library with its animation module.
Here's an example of how to create an animated scatter plot, where points move dynamically over time.
"""
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation
# Generate random initial data for the scatter plot
num_points = 50
x_data = np.random.rand(num_points)
y_data = np.random.rand(num_points)
colors = np.random.rand(num_points)
sizes = np.random.rand(num_points) * 100
# Function to update scatter plot
def update(frame):
global x_data, y_data
x_data += (np.random.rand(num_points) - 0.5) * 0.1 # Randomly move x
y_data += (np.random.rand(num_points) - 0.5) * 0.1 # Randomly move y
scatter.set_offsets(np.c_[x_data, y_data]) # Update positions
scatter.set_sizes(np.random.rand(num_points) * 100) # Update sizes
scatter.set_array(np.random.rand(num_points)) # Update colors
return scatter,
# Create the figure and scatter plot
fig, ax = plt.subplots()
scatter = ax.scatter(x_data, y_data, c=colors, s=sizes, cmap='viridis', alpha=0.6)
ax.set_xlim(0, 1)
ax.set_ylim(0, 1)
ax.set_title("Animated Scatter Plot")
# Create animation
ani = FuncAnimation(fig, update, frames=100, interval=50, blit=True)
# Show the animation
plt.show()
import matplotlib.animation as animation
animation.FFMpegWriter = animation.writers['ffmpeg']
"""
Install FFmpeg: FFmpeg is required to save animations in video formats like .mp4. Install it as follows:
Windows:
Download the FFmpeg executable from https://ffmpeg.org/download.html.
Add the bin folder to your system’s PATH environment variable.
1.EXE 파일 다운받아서 *.7z 파일 다운로드.
2.압축 풀고, 시스템 환경 변수에 추가.
3. ffmpeg -version 으로 실행되는지 확인
"""
ani.save("animated_scatter.mp4", writer="ffmpeg", fps=30) # Save as MP4
몸속의 가장 적대적인 요소들을 친하게 만들어서 서로 사랑하게끔 해야 합니다. 가장 반대되는 것들이 가장 적대적입니다. 즉, 차가운 것은 뜨거운 것, 쓴맛은 단맛, 건조한 것은 습한 것과 반대되지요. 우리 조상이신 아스클레피오스(의술의 신)께서는 반대되는 것들이 서로 사랑하며 사이좋게 지내게 했습니다.
- 플라톤의 《향연》 중에서 -
* 남극과 북극처럼 어느 곳이든 극단은 존재합니다. 그 극단은 가장 멀고 가장 적대적인 요소이지만 사실은 가장 서로를 보완하는 요소이기도 합니다. 단단함 속에 부드러움이, 불과 물이, 무거운 것과 가벼운 것인 5원소가 적절히 조화를 이루어 사람과 세상 만물을 이루고 있습니다.
"""
정렬 알고리즘 실행 시 비용 계산은 보통 실행 시간(시간 복잡도)이나 작업 횟수를 측정하여 이뤄집니다.
이를 위해 Python에서 time 모듈이나 timeit 모듈을 사용할 수 있습니다.
시간 복잡도에 따른 차이
1.퀵 정렬:
평균 시간 복잡도 𝑂(𝑛log𝑛)O(nlogn).
큰 데이터셋에서도 효율적으로 작동.
2.버블 정렬:
최악 및 평균 시간 복잡도 𝑂(𝑛2)O(n 2 ).
작은 데이터셋에서는 괜찮지만, 데이터 크기가 클수록 비효율적.
"""
import time # 실행 시간 측정을 위한 모듈
# 퀵 정렬 알고리즘
def quick_sort(arr):
if len(arr) <= 1:
return arr
pivot = arr[len(arr) // 2]
left = [x for x in arr if x < pivot]
middle = [x for x in arr if x == pivot]
right = [x for x in arr if x > pivot]
return quick_sort(left) + middle + quick_sort(right)
# 버블 정렬 알고리즘
def bubble_sort(arr):
n = len(arr)
for i in range(n):
for j in range(0, n - i - 1):
if arr[j] > arr[j + 1]:
arr[j], arr[j + 1] = arr[j + 1], arr[j]
return arr
# 테스트 데이터 생성
import random
array_size = 1000 # 데이터 크기
test_array = random.sample(range(1, 10000), array_size)
print(f" test_array : {test_array} \n\n\n")
# 퀵 정렬 실행 시간 측정
start_time = time.time()
quick_sort(test_array.copy())
end_time = time.time()
print(f"퀵 정렬 실행 시간: {end_time - start_time:.5f}초")
# 버블 정렬 실행 시간 측정
start_time = time.time()
bubble_sort(test_array.copy())
end_time = time.time()
print(f"버블 정렬 실행 시간: {end_time - start_time:.5f}초")
# 병합 정렬 알고리즘
def merge_sort(arr):
if len(arr) <= 1:
return arr
mid = len(arr) // 2
left = merge_sort(arr[:mid])
right = merge_sort(arr[mid:])
return merge(left, right)
def merge(left, right):
result = []
i = j = 0
while i < len(left) and j < len(right):
if left[i] < right[j]:
result.append(left[i])
i += 1
else:
result.append(right[j])
j += 1
result.extend(left[i:])
result.extend(right[j:])
return result
# 병합 정렬 실행 시간 측정
start_time = time.time()
merge_sort(test_array.copy())
end_time = time.time()
print(f"병합 정렬 실행 시간: {end_time - start_time:.5f}초")
[python] 정렬 알고리즘 실행 시 비용 계산은 보통 실행 시간(시간 복잡도)이나 작업 횟수를 측정
처음 장사를 해 보지만 이곳에서 배운 것이 몇 가지 있다. 남들보다 먼저 문을 열고 남들보다 늦게 문을 닫으면 망할 일은 없는 것이 장사 같다. 장사는 이문을 남기는 것보다 사람을 남겨야 한다.
- 최요한의《시를 쓰고 커피를 볶는 것은 운명이 아닐까요?》중에서 -
* 장사든 뭐든 성공 비결은 단순한 것에 있습니다. 부지런함입니다. 한 발 먼저, 한 번 더 챙기면 적어도 망할 일은 없습니다. 그러나 중요한 것은 그 '목적'에 있습니다. 이문을 남기는 것이야말로 장사의 기본이지만 궁극의 목표가 돈이 아니라 사람이어야 한다는 신념으로 할 때 더 큰 성공, 더 의미 있는 성공을 거둘 수 있습니다.