Path: blob/main/py-polars/tests/benchmark/interop/test_numpy.py
6940 views
"""Benchmark tests for conversions from/to NumPy."""12from __future__ import annotations34from typing import Any56import numpy as np7import pytest89import polars as pl1011pytestmark = pytest.mark.benchmark()121314@pytest.fixture(scope="module")15def floats_array() -> np.ndarray[Any, Any]:16n_rows = 10_00017return np.random.randn(n_rows)181920@pytest.fixture21def floats(floats_array: np.ndarray[Any, Any]) -> pl.Series:22return pl.Series(floats_array)232425@pytest.fixture26def floats_with_nulls(floats: pl.Series) -> pl.Series:27null_probability = 0.128validity = pl.Series(np.random.uniform(size=floats.len())) > null_probability29return pl.select(pl.when(validity).then(floats)).to_series()303132@pytest.fixture33def floats_chunked(floats_array: np.ndarray[Any, Any]) -> pl.Series:34n_chunks = 535chunk_len = len(floats_array) // n_chunks36chunks = [37floats_array[i * chunk_len : (i + 1) * chunk_len] for i in range(n_chunks)38]39chunks_copy = [pl.Series(c.copy()) for c in chunks]40return pl.concat(chunks_copy, rechunk=False)414243def test_to_numpy_series_zero_copy(floats: pl.Series) -> None:44floats.to_numpy()454647def test_to_numpy_series_with_nulls(floats_with_nulls: pl.Series) -> None:48floats_with_nulls.to_numpy()495051def test_to_numpy_series_chunked(floats_chunked: pl.Series) -> None:52floats_chunked.to_numpy()535455