pip install bottleneck numpy
python -c "
import numpy as np
import bottleneck as bn
import time

# NaN を含む配列での集計
a = np.array([1, 2, float('nan'), 4, 5])
print('配列:', a)
print('nanmean:', bn.nanmean(a))
print('nanmedian:', bn.nanmedian(a))
print('nanmin:', bn.nanmin(a))
print('nanmax:', bn.nanmax(a))
print('anynan:', bn.anynan(a))
print('move_mean (window=2):', bn.move_mean(a, window=2, min_count=1))

# 速度比較
rng = np.random.default_rng(0)
b = rng.random(1000)
b[rng.random(1000) < 0.2] = np.nan

N = 10000
t0 = time.perf_counter()
for _ in range(N): np.nanmean(b)
np_t = (time.perf_counter() - t0) * 1000

t0 = time.perf_counter()
for _ in range(N): bn.nanmean(b)
bn_t = (time.perf_counter() - t0) * 1000

print(f'nanmean: NumPy={np_t:.1f}ms  Bottleneck={bn_t:.1f}ms  speedup={np_t/bn_t:.1f}x')

# ベンチマーク全体
bn.bench()
"
