{"library":"pwlf","title":"pwlf: Piecewise Linear Fitting","description":"pwlf is a Python library (v2.5.2) for fitting continuous piecewise linear functions to 1D data. It allows users to specify the number of line segments and uses global optimization (like differential evolution or L-BFGS-B) to find optimal breakpoint locations. The library also supports fitting with known breakpoints, constrained fits, and provides statistical properties like standard errors and R-squared values. It is actively maintained with regular releases.","language":"python","status":"active","last_verified":"Sun May 17","install":{"commands":["pip install pwlf"],"cli":null},"imports":["from pwlf import PiecewiseLinFit"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import numpy as np\nfrom pwlf import PiecewiseLinFit\n\n# 1. Generate sample data\nx = np.linspace(0, 10, 100)\ny = 2 * x + np.random.normal(0, 0.5, 100) # First segment\ny[50:] = -1 * x[50:] + 20 + np.random.normal(0, 0.5, 50) # Second segment\n\n# 2. Initialize pwlf with your data\nmy_pwlf = PiecewiseLinFit(x, y)\n\n# 3. Fit the function with a specified number of line segments (e.g., 2)\n# The 'fit' method uses global optimization to find the best breakpoint locations.\nbreaks = my_pwlf.fit(2)\nprint(f\"Optimal breakpoints: {breaks}\")\n\n# 4. Predict new y values using the fitted model\nx_new = np.linspace(0, 10, 200)\ny_predicted = my_pwlf.predict(x_new)\n\n# You can also get other statistics after fitting\nr_squared = my_pwlf.r_squared()\nprint(f\"R-squared: {r_squared}\")\n\n# Example of getting slopes (after fit)\nslopes = my_pwlf.slopes\nprint(f\"Slopes of segments: {slopes}\")","lang":"python","description":"This quickstart demonstrates how to use `pwlf` to fit a continuous piecewise linear function. It involves generating sample data, initializing the `PiecewiseLinFit` object, performing a fit for a specified number of line segments, and then predicting values from the fitted model. It also shows how to retrieve the optimal breakpoints and R-squared value.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-17","installed_version":"2.5.2","pypi_latest":"2.5.2","is_stale":false,"summary":{"python_range":"3.10–3.9","success_rate":100,"avg_install_s":7.4,"avg_import_s":2.44,"wheel_type":"wheel"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"pwlf","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":1.91,"mem_mb":37.3,"disk_size":"230.8M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"pwlf","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":7.4,"import_time_s":1.49,"mem_mb":37.3,"disk_size":"222M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"pwlf","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":3.42,"mem_mb":46.5,"disk_size":"246.0M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"pwlf","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":7,"import_time_s":3.03,"mem_mb":46.5,"disk_size":"235M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"pwlf","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":2.93,"mem_mb":45.5,"disk_size":"232.0M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"pwlf","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":7.1,"import_time_s":3.23,"mem_mb":45.6,"disk_size":"221M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"pwlf","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":2.71,"mem_mb":45.6,"disk_size":"230.8M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"pwlf","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":7.4,"import_time_s":2.73,"mem_mb":45.6,"disk_size":"220M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"pwlf","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":1.53,"mem_mb":35.7,"disk_size":"233.0M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"pwlf","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":8,"import_time_s":1.42,"mem_mb":35.7,"disk_size":"229M"}]}}