Skip to main content

Build Status

kmeans1d

A Python library with an implementation of k-means clustering on 1D data, based on the algorithm from Xiaolin (1991), as presented by Gronlund et al. (2017, Section 2.2).

Globally optimal k-means clustering is NP-hard for multi-dimensional data. Lloyd's algorithm is a popular approach for finding a locally optimal solution. For 1-dimensional data, there are polynomial time algorithms. The algorithm implemented here is an O(kn + n log n) dynamic programming algorithm for finding the globally optimal k clusters for n 1D data points.

The code is written in C++, and wrapped with Python.

Requirements

kmeans1d supports Python 3.x.

Installation

kmeans1d is available on PyPI, the Python Package Index.

$ pip3 install kmeans1d

Example Usage

import kmeans1d

x = [4.0, 4.1, 4.2, -50, 200.2, 200.4, 200.9, 80, 100, 102]
k = 4

clusters, centroids = kmeans1d.cluster(x, k)

print(clusters)   # [1, 1, 1, 0, 3, 3, 3, 2, 2, 2]
print(centroids)  # [-50.0, 4.1, 94.0, 200.5]

Tests

Tests are in tests/.

# Run tests
$ python3 -m unittest discover tests -v

Development

The underlying C++ code can be built in-place, outside the context of pip. This requires Python development tools for building Python modules (e.g., the python3-dev package on Ubuntu). gcc, clang, and MSVC have been tested.

$ python3 setup.py build_ext --inplace

The packages GitHub action can be manually triggered (Actions > packages > Run workflow) to build wheels and a source distribution.

License

The code in this repository has an MIT License.

See LICENSE.

References

[1] Wu, Xiaolin. "Optimal Quantization by Matrix Searching." Journal of Algorithms 12, no. 4 (December 1, 1991): 663

[2] Gronlund, Allan, Kasper Green Larsen, Alexander Mathiasen, Jesper Sindahl Nielsen, Stefan Schneider, and Mingzhou Song. "Fast Exact K-Means, k-Medians and Bregman Divergence Clustering in 1D." ArXiv:1701.07204 [Cs], January 25, 2017. http://arxiv.org/abs/1701.07204.

Metadata

Release files for kmeans1d 0.5.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for kmeans1d 0.5.1
File Size Uploaded Provenance Actions
kmeans1d-0.5.1.tar.gz 9.5 kB Without provenance Details for kmeans1d-0.5.1.tar.gz

Built distributions (wheels)

Table of built distributions (wheels) for kmeans1d 0.5.1
File Actions
kmeans1d-0.5.1-cp315-abi3.abi3t-win_arm64.whl CPython 3.15 abi3, abi3t Windows ARM64 Details for kmeans1d-0.5.1-cp315-abi3.abi3t-win_arm64.whl
kmeans1d-0.5.1-cp315-abi3.abi3t-win_amd64.whl CPython 3.15 abi3, abi3t Windows x86-64 Details for kmeans1d-0.5.1-cp315-abi3.abi3t-win_amd64.whl
kmeans1d-0.5.1-cp315-abi3.abi3t-manylinux_2_34_x86_64.whl CPython 3.15 abi3, abi3t Linux glibc 2.34+ x86-64 Details for kmeans1d-0.5.1-cp315-abi3.abi3t-manylinux_2_34_x86_64.whl
kmeans1d-0.5.1-cp315-abi3.abi3t-manylinux_2_34_aarch64.whl CPython 3.15 abi3, abi3t Linux glibc 2.34+ ARM64 Details for kmeans1d-0.5.1-cp315-abi3.abi3t-manylinux_2_34_aarch64.whl
kmeans1d-0.5.1-cp315-abi3.abi3t-macosx_10_15_universal2.whl CPython 3.15 abi3, abi3t macOS 10.15+ universal2 (ARM64, x86-64) Details for kmeans1d-0.5.1-cp315-abi3.abi3t-macosx_10_15_universal2.whl
kmeans1d-0.5.1-cp312-abi3-win_arm64.whl CPython 3.12 abi3 Windows ARM64 Details for kmeans1d-0.5.1-cp312-abi3-win_arm64.whl
kmeans1d-0.5.1-cp312-abi3-win_amd64.whl CPython 3.12 abi3 Windows x86-64 Details for kmeans1d-0.5.1-cp312-abi3-win_amd64.whl
kmeans1d-0.5.1-cp312-abi3-manylinux_2_34_x86_64.whl CPython 3.12 abi3 Linux glibc 2.34+ x86-64 Details for kmeans1d-0.5.1-cp312-abi3-manylinux_2_34_x86_64.whl
kmeans1d-0.5.1-cp312-abi3-manylinux_2_34_aarch64.whl CPython 3.12 abi3 Linux glibc 2.34+ ARM64 Details for kmeans1d-0.5.1-cp312-abi3-manylinux_2_34_aarch64.whl
kmeans1d-0.5.1-cp312-abi3-macosx_10_13_universal2.whl CPython 3.12 abi3 macOS 10.13+ universal2 (ARM64, x86-64) Details for kmeans1d-0.5.1-cp312-abi3-macosx_10_13_universal2.whl
kmeans1d-0.5.1-cp32-abi3-win_arm64.whl CPython 3.2 abi3 Windows ARM64 Details for kmeans1d-0.5.1-cp32-abi3-win_arm64.whl
kmeans1d-0.5.1-cp32-abi3-win_amd64.whl CPython 3.2 abi3 Windows x86-64 Details for kmeans1d-0.5.1-cp32-abi3-win_amd64.whl
kmeans1d-0.5.1-cp32-abi3-manylinux_2_34_x86_64.whl CPython 3.2 abi3 Linux glibc 2.34+ x86-64 Details for kmeans1d-0.5.1-cp32-abi3-manylinux_2_34_x86_64.whl
kmeans1d-0.5.1-cp32-abi3-manylinux_2_34_aarch64.whl CPython 3.2 abi3 Linux glibc 2.34+ ARM64 Details for kmeans1d-0.5.1-cp32-abi3-manylinux_2_34_aarch64.whl
kmeans1d-0.5.1-cp32-abi3-macosx_10_9_universal2.whl CPython 3.2 abi3 macOS 10.9+ universal2 (ARM64, x86-64) Details for kmeans1d-0.5.1-cp32-abi3-macosx_10_9_universal2.whl

Total release size: 908.3 kB

Release files / kmeans1d-0.5.1.tar.gz

Download URL kmeans1d-0.5.1.tar.gz
Size 9.5 kB
Tags Source
SHA-256 checksum
How to use checksums
b052406fbdc80770cd9f50da16e4b13b19eed04ddae21076bf19443f7d16dbe5
BLAKE2b-256 checksum
How to use checksums
9b9078c99ce504734edf37c4410cfda0e06dd711fdeb520c1ed1bf53b2311f30
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.2

Release files / kmeans1d-0.5.1-cp315-abi3.abi3t-win_arm64.whl

Download URL kmeans1d-0.5.1-cp315-abi3.abi3t-win_arm64.whl
Size 17.0 kB
Tags CPython 3.15 Windows ARM64 abi3 abi3t
SHA-256 checksum
How to use checksums
da0f15d2b29dc133a7f735b5e59fe3b54c64de189bd6ee9bdad1b19f69397995
BLAKE2b-256 checksum
How to use checksums
fe634b9c7ea6f013314f3555048383649234eb6d755c877e3a131567f265963e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.2

Release files / kmeans1d-0.5.1-cp315-abi3.abi3t-win_amd64.whl

Download URL kmeans1d-0.5.1-cp315-abi3.abi3t-win_amd64.whl
Size 19.0 kB
Tags CPython 3.15 Windows x86-64 abi3 abi3t
SHA-256 checksum
How to use checksums
f1a117061a2bff6f579d4b1143f1e758d4908952dcc1585149f67ef94f1ea9d5
BLAKE2b-256 checksum
How to use checksums
31bbb7463bca4983f6d553beff522afc95ad016daefb8e118847def437d9ee09
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.2

Release files / kmeans1d-0.5.1-cp315-abi3.abi3t-manylinux_2_34_x86_64.whl

Download URL kmeans1d-0.5.1-cp315-abi3.abi3t-manylinux_2_34_x86_64.whl
Size 119.1 kB
Tags CPython 3.15 Linux glibc 2.34+ x86-64 abi3 abi3t
SHA-256 checksum
How to use checksums
231cb6b8885159e32029db45eb8c9604d63b9c2b17f841d120d921a8372814a7
BLAKE2b-256 checksum
How to use checksums
e0aa6baa393dcb8911f8efabc5c90fb417cd864a385b3465faa07d74e582e8c8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.2

Release files / kmeans1d-0.5.1-cp315-abi3.abi3t-manylinux_2_34_aarch64.whl

Download URL kmeans1d-0.5.1-cp315-abi3.abi3t-manylinux_2_34_aarch64.whl
Size 117.4 kB
Tags CPython 3.15 Linux glibc 2.34+ ARM64 abi3 abi3t
SHA-256 checksum
How to use checksums
79387a87885a756adeacde96c3a261d8b91631c8f7d254226c34b441a7cd43a0
BLAKE2b-256 checksum
How to use checksums
a1e94f617eee791208967a53f75907e909e88f38b6cc3d2493fc608b50869f52
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.2

Release files / kmeans1d-0.5.1-cp315-abi3.abi3t-macosx_10_15_universal2.whl

Download URL kmeans1d-0.5.1-cp315-abi3.abi3t-macosx_10_15_universal2.whl
Size 28.1 kB
Tags CPython 3.15 abi3 abi3t macOS 10.15+ universal2 (ARM64, x86-64)
SHA-256 checksum
How to use checksums
89bd50e3abc5d751d0bca2d40031cb6427207260e6e2c5eabefa3ccc65d6105f
BLAKE2b-256 checksum
How to use checksums
2f3c63320d194664082228b3afec39c6b302f31781e3f2558154222fe6b84f39
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.2

Release files / kmeans1d-0.5.1-cp312-abi3-win_arm64.whl

Download URL kmeans1d-0.5.1-cp312-abi3-win_arm64.whl
Size 16.4 kB
Tags CPython 3.12 Windows ARM64 abi3
SHA-256 checksum
How to use checksums
8a16ceb33aef528d235644f9dedb9265d7f216cae0f79ae8c15257e2fb9f8bd9
BLAKE2b-256 checksum
How to use checksums
3832b982382b99c279200ff35500eb40c6a783db3de2aa6eb3a6b94ba2455ce2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.2

Release files / kmeans1d-0.5.1-cp312-abi3-win_amd64.whl

Download URL kmeans1d-0.5.1-cp312-abi3-win_amd64.whl
Size 18.5 kB
Tags CPython 3.12 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
a805cd38c2ca6f5ff3efbfccbcc83b1f7b41119b97760615ffa00a4ee605477d
BLAKE2b-256 checksum
How to use checksums
e23532fbe44575776f10251b7b96959ac961c6de61c7020093c01631e398200d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.2

Release files / kmeans1d-0.5.1-cp312-abi3-manylinux_2_34_x86_64.whl

Download URL kmeans1d-0.5.1-cp312-abi3-manylinux_2_34_x86_64.whl
Size 119.1 kB
Tags CPython 3.12 Linux glibc 2.34+ x86-64 abi3
SHA-256 checksum
How to use checksums
62a9c038ebd656b1ad6f715aee8f8218811a25a17292ffc128aa6b1a6aceb874
BLAKE2b-256 checksum
How to use checksums
325a90aa2a992663e900c9e10b68302efed2d30ecf03a7a1968b5698708501e6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.2

Release files / kmeans1d-0.5.1-cp312-abi3-manylinux_2_34_aarch64.whl

Download URL kmeans1d-0.5.1-cp312-abi3-manylinux_2_34_aarch64.whl
Size 117.2 kB
Tags CPython 3.12 Linux glibc 2.34+ ARM64 abi3
SHA-256 checksum
How to use checksums
5c1d7c125390d78bce751ef7960fa5790b15e62f28972ea9c931d5635de745e3
BLAKE2b-256 checksum
How to use checksums
02ec6470ffbacd734550621a215d33b83d52ed3060bad505605bfbf88f2e2e4c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.2

Release files / kmeans1d-0.5.1-cp312-abi3-macosx_10_13_universal2.whl

Download URL kmeans1d-0.5.1-cp312-abi3-macosx_10_13_universal2.whl
Size 27.7 kB
Tags CPython 3.12 abi3 macOS 10.13+ universal2 (ARM64, x86-64)
SHA-256 checksum
How to use checksums
e617ff7977cfc291929259c9ffd5279a8a9c437a454a388a4694e3699019c473
BLAKE2b-256 checksum
How to use checksums
b71284bf3ed9c9f4d1cf296fe26e71f405e54a8c4d706db1135bd927856f32e5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.2

Release files / kmeans1d-0.5.1-cp32-abi3-win_arm64.whl

Download URL kmeans1d-0.5.1-cp32-abi3-win_arm64.whl
Size 16.4 kB
Tags CPython 3.2 Windows ARM64 abi3
SHA-256 checksum
How to use checksums
e277a94b9c816ba0c9023b1bf2150b2e1800909b98ff7ed9c8ede4cf2ae7b903
BLAKE2b-256 checksum
How to use checksums
626e236292d86a7f6c0aa7cb12d9b27c92a5a5f846bf0bc17a5341cd2df03839
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.2

Release files / kmeans1d-0.5.1-cp32-abi3-win_amd64.whl

Download URL kmeans1d-0.5.1-cp32-abi3-win_amd64.whl
Size 18.4 kB
Tags CPython 3.2 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
13f2fd1f6afb60d2f834ced4e9df259f87ef803ae2c0ee4d50319f079e8aaf99
BLAKE2b-256 checksum
How to use checksums
e80193aa545b9650312281f61f15f74ad80923ec4ac4d1469c1a4a8d5783cbfe
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.2

Release files / kmeans1d-0.5.1-cp32-abi3-manylinux_2_34_x86_64.whl

Download URL kmeans1d-0.5.1-cp32-abi3-manylinux_2_34_x86_64.whl
Size 119.2 kB
Tags CPython 3.2 Linux glibc 2.34+ x86-64 abi3
SHA-256 checksum
How to use checksums
dabdfa09bad588b5cd4e27934659cdcb90224148835ab27f5ecb53f7861dce79
BLAKE2b-256 checksum
How to use checksums
361fd7a2ab60be38339be17a6d663c7c3a41351862dcc470067ce30301716623
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.2

Release files / kmeans1d-0.5.1-cp32-abi3-manylinux_2_34_aarch64.whl

Download URL kmeans1d-0.5.1-cp32-abi3-manylinux_2_34_aarch64.whl
Size 117.3 kB
Tags CPython 3.2 Linux glibc 2.34+ ARM64 abi3
SHA-256 checksum
How to use checksums
24ec199f244cd5829afa2e81fa610b7a02628154c84d47a4c0acc08974202e7a
BLAKE2b-256 checksum
How to use checksums
1ff8f59bf312c950084442e762d19e7cfc4f18f689dc3f0a5c3729c8553259d4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.2

Release files / kmeans1d-0.5.1-cp32-abi3-macosx_10_9_universal2.whl

Download URL kmeans1d-0.5.1-cp32-abi3-macosx_10_9_universal2.whl
Size 27.8 kB
Tags CPython 3.2 abi3 macOS 10.9+ universal2 (ARM64, x86-64)
SHA-256 checksum
How to use checksums
56f9f54d7df7c907babc9a972960e9215555feb69859d5f24bb4785da7ec1d8d
BLAKE2b-256 checksum
How to use checksums
741141c7f4ab50b215e4af0bc9578f2ad4e16b297a0331d91a756e33b733708d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.2

Security for kmeans1d 0.5.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page