Skip to main content

CKmeans: Optimal Univariate Clustering

Ckmeans clustering is an improvement on 1-dimensional (univariate) heuristic-based clustering approaches such as Jenks. The algorithm was developed by Haizhou Wang and Mingzhou Song (2011) as a dynamic programming approach to the problem of clustering numeric data into groups with the least within-group sum-of-squared-deviations.

Minimising the difference within groups – what Wang & Song refer to as withinss, or within sum-of-squares – means that groups are optimally homogeneous within and the data is split into representative groups. This is useful for visualisation, where one may wish to represent a continuous variable in discrete colour or style groups.

Being a dynamic approach, this algorithm is based on two matrices that store incrementally-computed values for squared deviations and backtracking indexes.

If you do not know the number of clusters, ckmeans_optimal chooses it with the Bayesian Information Criterion (BIC), following Song & Zhong (2020).

Implementation

This library uses the ckmeans Rust crate, by the same author.

All functions accept any one-dimensional array-like input (a NumPy array of any numeric dtype, a list or a tuple), and convert it to float64. They release the GIL during the calculation.

ckmeans(data, k)

Cluster data into k groups with the least within-group sum of squares. Returns a list of float64 arrays, one for each cluster, in ascending order of value. Each cluster is sorted.

If data has fewer than k distinct values, there is one cluster for each distinct value.

breaks(data, k)

Calculate the breaks between k clusters, for labels and legends. Returns one break fewer than the number of clusters.

The lower bounds of the clusters from ckmeans can have many decimal places, which makes them unsuitable for a legend. Rounding them can be too loose (spurious decimal places) or too strict (classes ranging "from x to x"). Each break b is instead the roundest number between the highest value of a cluster (last) and the lowest value of the next cluster (first), so that last < b <= first. It is a multiple of the largest power of ten that has a multiple in that interval; of those multiples, it is the one nearest the midpoint.

This method is based on the visionscarto method of the same name.

ckmeans_optimal(data, k_min=1, k_max=9)

Find the best number of clusters for data, and cluster the data. Use this function when you do not know how many clusters the data has.

The function clusters data for each number of clusters k from k_min to k_max. It then chooses the k with the lowest Bayesian Information Criterion (BIC), which balances how closely the clusters fit the data against the number of clusters. The BIC is that of a Gaussian mixture with one component for each cluster. k_max is capped at the number of distinct values in data.

ckmeans_optimal chooses the same k as the R package Ckmeans.1d.dp. That package reports the negative of the BIC values in OptimalResult.bic.

The default range of 1 to 9 is the same as in the R package Ckmeans.1d.dp. If the data can have more than 9 clusters, set a higher k_max (up to 255).

Returns an OptimalResult, with these attributes:

Attribute Type Content
k int The chosen number of clusters
clusters list of float64 arrays The clusters, as returned by ckmeans
centers float64 array The mean of each cluster
sizes intp array The number of values in each cluster
withinss float64 array The within-cluster sum of squares of each cluster
ks intp array The candidate numbers of clusters
bic float64 array The BIC of each candidate number of clusters

Errors

All functions raise CkmeansError, a subclass of ValueError, if:

  • k (or k_min) is less than 1
  • k, k_min or k_max is greater than 255
  • k is greater than the number of values, or k_min is greater than the number of distinct values
  • k_min is greater than k_max
  • data contains NaN

Numerical limits

  • Infinite values are accepted, but a cluster that contains one has no finite sum of squares. The result is then a partition of the input with no optimality guarantee. ckmeans_optimal returns NaN BIC values for such input and uses k_min.
  • The costs are calculated in float64 from cumulative sums. If the data spans a very large range (for example, values that differ by 1 alongside values of order 1e8), cost differences below float64 resolution are lost. The result can then be sub-optimal by that amount, and equal values can be put in adjacent clusters. breaks then returns the first value of the upper cluster as the break.

Upgrading from 1.0

  • ckmeans_optimal uses version 2.1 of the crate. Version 1.0 chose k_max, or a value near it, for most input. The k and bic values of the result change for most input.
  • ckmeans_optimal is approximately 3.5 times faster for the default range of k.

Upgrading from 0.2

  • Invalid input raises CkmeansError, a subclass of ValueError. Version 0.2 raised RuntimeError, or PanicException for NaN input, k greater than 255 and non-contiguous arrays.
  • breaks uses the method of version 2.0 of the crate, and can return different values. For example, breaks([1.0, 2.0, 3.0, 4.0, 100.0, 101.0, 102.0, 103.0], 2) returns [100.0], not [50.0].
  • The clusters from ckmeans are views of one sorted copy of the input.
  • data and k can be given as keyword arguments.
  • Python 3.11 or later is required.

Install for local development

  1. Ensure that maturin and a recent Rust toolchain are installed
  2. maturin develop --release (you will need to re-run this command if you're hacking on the source and want to e.g. benchmark your changes). uv run rebuilds the extension when the Rust sources change.

Benchmarks

Benchmarks can be run using uv run pytest --benchmark-only.

The benchmarks compare this Rust implementation against ckmeans-1d-dp (C++ implementation) across different data sizes and cluster counts:

  • 110k samples with 5 or 20 clusters
  • 1M samples with 5 or 20 clusters
  • 110k and 1M samples with ckmeans_optimal, for k from 1 to 9

Results are grouped for meaningful comparison between implementations with identical parameters. Benchmark results also generate histogram visualisations saved as SVG files.

Results

ckmeans takes 32 to 42 % less time than ckmeans-1d-dp, and 37 to 45 % less time than the original R package that wraps the same C++ library.

Mean times on an Apple M2 Pro, with Uniform(1, 3) input:

Samples Clusters ckmeans ckmeans-1d-dp 4.3.4.4 R Ckmeans.1d.dp 4.3.5
110k 5 16.0 ms 25.2 ms 28.1 ms
110k 20 59.7 ms 102.9 ms 109.1 ms
1M 5 167.3 ms 257.2 ms 289.8 ms
1M 20 660.3 ms 974.4 ms 1043.8 ms

The R times are the mean of 20 calls (110k) or 5 calls (1M) of Ckmeans.1d.dp(x, k), measured with system.time. The bench_cpp crate in the ckmeans repository compares the Rust and C++ code without the Python layer, and gives similar results.

ckmeans_optimal takes 24 % less time than ckmeans-1d-dp and 29 % less time than R Ckmeans.1d.dp when they choose k from 1 to 9 by BIC:

Samples ckmeans_optimal ckmeans-1d-dp 4.3.4.4 R Ckmeans.1d.dp 4.3.5
110k 47.6 ms 62.6 ms 67.1 ms
1M 458.0 ms 609.0 ms 646.6 ms

The R times are the mean of 20 calls (110k) or 5 calls (1M) of Ckmeans.1d.dp(x, k = c(1, 9)).

Note: The ckmeans-1d-dp Python package only returns indices identifying each cluster to which the input belongs. If you want to cluster your data, you need to do that yourself.

Examples

import numpy as np
from ckmeans import ckmeans

data = np.array([1.0, 2.0, 3.0, 4.0, 100.0, 101.0, 102.0, 103.0])
result = ckmeans(data, 2)
np.testing.assert_array_equal(result[0], [1.0, 2.0, 3.0, 4.0])
np.testing.assert_array_equal(result[1], [100.0, 101.0, 102.0, 103.0])
from ckmeans import breaks

result = breaks([0.12, 0.13, 0.21, 0.24, 0.87, 0.91], k=2)
assert result.tolist() == [0.6]
from ckmeans import ckmeans_optimal

data = [1.0, 1.1, 1.2, 50.0, 51.0, 52.0, 100.0, 101.0, 102.0]
result = ckmeans_optimal(data)
assert result.k == 3
assert result.sizes.tolist() == [3, 3, 3]

License

Blue Oak Model License 1.0.0

Metadata

Release files for ckmeans 1.1.0

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

Source distribution (sdist)

Source distribution for ckmeans 1.1.0
File Size Uploaded
ckmeans-1.1.0.tar.gz 25.2 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for ckmeans 1.1.0
File
ckmeans-1.1.0-cp314-cp314t-win_arm64.whl CPython 3.14 CPython 3.14 free-threading Windows ARM64 Details
ckmeans-1.1.0-cp314-cp314t-win_amd64.whl CPython 3.14 CPython 3.14 free-threading Windows x86-64 Details
ckmeans-1.1.0-cp314-cp314t-win32.whl CPython 3.14 CPython 3.14 free-threading Windows x86-32 Details
ckmeans-1.1.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ x86-64 Details
ckmeans-1.1.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ ARM64 Details
ckmeans-1.1.0-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl CPython 3.14 CPython 3.14 free-threading Linux glibc 2.5+ x86-32 Details
ckmeans-1.1.0-cp314-cp314t-macosx_11_0_arm64.whl CPython 3.14 CPython 3.14 free-threading macOS 11.0+ ARM64 Details
ckmeans-1.1.0-cp314-cp314t-macosx_10_12_x86_64.whl CPython 3.14 CPython 3.14 free-threading macOS 10.12+ x86-64 Details
ckmeans-1.1.0-cp311-abi3-win_arm64.whl CPython 3.11 abi3 Windows ARM64 Details
ckmeans-1.1.0-cp311-abi3-win_amd64.whl CPython 3.11 abi3 Windows x86-64 Details
ckmeans-1.1.0-cp311-abi3-win32.whl CPython 3.11 abi3 Windows x86-32 Details
ckmeans-1.1.0-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.11 abi3 Linux glibc 2.17+ x86-64 Details
ckmeans-1.1.0-cp311-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.11 abi3 Linux glibc 2.17+ ARM64 Details
ckmeans-1.1.0-cp311-abi3-manylinux_2_5_i686.manylinux1_i686.whl CPython 3.11 abi3 Linux glibc 2.5+ x86-32 Details
ckmeans-1.1.0-cp311-abi3-macosx_11_0_arm64.whl CPython 3.11 abi3 macOS 11.0+ ARM64 Details
ckmeans-1.1.0-cp311-abi3-macosx_10_12_x86_64.whl CPython 3.11 abi3 macOS 10.12+ x86-64 Details

Total release size: 3.9 MB

Release files / ckmeans-1.1.0.tar.gz

Download URL ckmeans-1.1.0.tar.gz
Size 25.2 kB
Tags Source
SHA-256 checksum
How to use checksums
4a72602f677679dcb323ccf14efbc3fc3b9482ab9c6046773cb69fc108632257
BLAKE2b-256 checksum
How to use checksums
415bc8fafd5b5139474fe591bf4bc15376f5642bd3bf8ddccb1a4107ab4571cf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.21 {"installer":{"name":"uv","version":"0.12.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / ckmeans-1.1.0-cp314-cp314t-win_arm64.whl

Download URL ckmeans-1.1.0-cp314-cp314t-win_arm64.whl
Size 165.9 kB
Tags CPython 3.14 CPython 3.14 free-threading Windows ARM64
SHA-256 checksum
How to use checksums
512bfcb7326bc1f43989e32390f35dda44d87af24f572514f668cda9dfe581f8
BLAKE2b-256 checksum
How to use checksums
ed452ef380f13d47feceafaf3f8ecb4f61d771495dd849c13f3e960971ad00ef
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.21 {"installer":{"name":"uv","version":"0.12.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / ckmeans-1.1.0-cp314-cp314t-win_amd64.whl

Download URL ckmeans-1.1.0-cp314-cp314t-win_amd64.whl
Size 173.7 kB
Tags CPython 3.14 CPython 3.14 free-threading Windows x86-64
SHA-256 checksum
How to use checksums
2a37a86824b43ef4a1581fc3af46cc271bd7d7908bae8d44a1c076cd8cc7f985
BLAKE2b-256 checksum
How to use checksums
a4259d1b13597ca2f6f2cad38dfc2a4d77c313e53e20b4579d697bb89ceb4e70
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.21 {"installer":{"name":"uv","version":"0.12.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / ckmeans-1.1.0-cp314-cp314t-win32.whl

Download URL ckmeans-1.1.0-cp314-cp314t-win32.whl
Size 162.1 kB
Tags CPython 3.14 CPython 3.14 free-threading Windows x86-32
SHA-256 checksum
How to use checksums
1a09dc8667328d5c98bfb159b2638729a4b7d98958a65287980cc8ddbacb089d
BLAKE2b-256 checksum
How to use checksums
04d8835a4a855e8f04444ff659133c8183cfe5dff2be0a3b2c62f9ce60f8a344
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.21 {"installer":{"name":"uv","version":"0.12.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / ckmeans-1.1.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL ckmeans-1.1.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 289.6 kB
Tags CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
2cadf6cf10c352377a609098787a400dd7fb828352c3f8ccd11136e158aecb1e
BLAKE2b-256 checksum
How to use checksums
c2d2eb123f7f829274e4a0b1d4cecd24abb2b49fee55e49d0c3629c524354d94
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.21 {"installer":{"name":"uv","version":"0.12.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / ckmeans-1.1.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL ckmeans-1.1.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 285.0 kB
Tags CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
413facf26bd82f9e461610b014f9d5e80f5bca8f1a3decc747a73289f39f6299
BLAKE2b-256 checksum
How to use checksums
ea5c601c43a8934391a952f7fffe39d8c846c25a9ecd9ad84133d68a5645c6ba
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.21 {"installer":{"name":"uv","version":"0.12.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / ckmeans-1.1.0-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl

Download URL ckmeans-1.1.0-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl
Size 307.9 kB
Tags CPython 3.14 CPython 3.14 free-threading Linux glibc 2.5+ x86-32
SHA-256 checksum
How to use checksums
f92b875b6f4f32141967f3d1150ee2b17a7a487ca15125659122df2c23e00286
BLAKE2b-256 checksum
How to use checksums
6211c22d8fd1e82bafdaa003ed23b8dfe5da657e0b353f24e5d5975181dd3fe8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.21 {"installer":{"name":"uv","version":"0.12.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / ckmeans-1.1.0-cp314-cp314t-macosx_11_0_arm64.whl

Download URL ckmeans-1.1.0-cp314-cp314t-macosx_11_0_arm64.whl
Size 262.0 kB
Tags CPython 3.14 CPython 3.14 free-threading macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
c39ae4d36c7dff2c2a2c295b662b2567e1d6429ebcb94639a7fe682d349ee340
BLAKE2b-256 checksum
How to use checksums
f768f2fa8a13e1f87867962a696c7b6759d8e63cdc0859d58eae1d6fa9e09478
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.21 {"installer":{"name":"uv","version":"0.12.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / ckmeans-1.1.0-cp314-cp314t-macosx_10_12_x86_64.whl

Download URL ckmeans-1.1.0-cp314-cp314t-macosx_10_12_x86_64.whl
Size 273.0 kB
Tags CPython 3.14 CPython 3.14 free-threading macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
3e649f534264e5c902814ae1bce2328991c3700a274809c7c2fa4eebcd3ae0c4
BLAKE2b-256 checksum
How to use checksums
5c1c18efb7729cb450c4bf4577697a8433618be72f93f810a013fd1e34e71b7e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.21 {"installer":{"name":"uv","version":"0.12.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / ckmeans-1.1.0-cp311-abi3-win_arm64.whl

Download URL ckmeans-1.1.0-cp311-abi3-win_arm64.whl
Size 169.2 kB
Tags CPython 3.11 Windows ARM64 abi3
SHA-256 checksum
How to use checksums
8a1320b1d19cf72aa152d85774e1772b7bae94a51d2c3bb5e28c6ea47700b45e
BLAKE2b-256 checksum
How to use checksums
edf73e4474d4581da0db17b144f2abe0659ec9576f636f1645f6fa2005aa614c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.21 {"installer":{"name":"uv","version":"0.12.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / ckmeans-1.1.0-cp311-abi3-win_amd64.whl

Download URL ckmeans-1.1.0-cp311-abi3-win_amd64.whl
Size 176.8 kB
Tags CPython 3.11 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
8eb42de4c5feae9e336e7b22cd220ff9b27f72d9ea3970090b29128b9f60fa25
BLAKE2b-256 checksum
How to use checksums
5b615ede01c2b01e6d28345752b2e637aeed55c9b0d517e5ecee6901febe3b61
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.21 {"installer":{"name":"uv","version":"0.12.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / ckmeans-1.1.0-cp311-abi3-win32.whl

Download URL ckmeans-1.1.0-cp311-abi3-win32.whl
Size 164.8 kB
Tags CPython 3.11 Windows x86-32 abi3
SHA-256 checksum
How to use checksums
66201ffcb0f0f9b85bf06becb7b6621ff72a5a001bd8350ce480cfb5bdcac735
BLAKE2b-256 checksum
How to use checksums
1f04dc70c6e1d4be386f1813cd47a0d02746090bd2db7c32137425c0fe2fe673
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.21 {"installer":{"name":"uv","version":"0.12.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / ckmeans-1.1.0-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL ckmeans-1.1.0-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 291.3 kB
Tags CPython 3.11 Linux glibc 2.17+ x86-64 abi3
SHA-256 checksum
How to use checksums
82bb1440f90ec1566799ed39d710c43ef2a94f73e687e4aee036be84a17d3229
BLAKE2b-256 checksum
How to use checksums
82b75609a351238ab6700b13ec92086bc0e903d59ca272836ef2fc3c9a2ec6db
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.21 {"installer":{"name":"uv","version":"0.12.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / ckmeans-1.1.0-cp311-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL ckmeans-1.1.0-cp311-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 286.3 kB
Tags CPython 3.11 Linux glibc 2.17+ ARM64 abi3
SHA-256 checksum
How to use checksums
66c16d8c7fe036cd32832da3711f72631b1f9e41ebb083dbd65a5c959992b443
BLAKE2b-256 checksum
How to use checksums
5bb73ef9591d81b80abca75b01b580f6f1ebbb3916e54ce736fa4cca3da6c2fb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.21 {"installer":{"name":"uv","version":"0.12.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / ckmeans-1.1.0-cp311-abi3-manylinux_2_5_i686.manylinux1_i686.whl

Download URL ckmeans-1.1.0-cp311-abi3-manylinux_2_5_i686.manylinux1_i686.whl
Size 310.8 kB
Tags CPython 3.11 Linux glibc 2.5+ x86-32 abi3
SHA-256 checksum
How to use checksums
f2c7667086a38a81fdb77bf6a741372ca2585d2c4cef9c4aa261dd5c2f67b7ef
BLAKE2b-256 checksum
How to use checksums
f3afd8708403cc49512153642d04626810c4cf050865cd9a0ca0c2baf04d8f81
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.21 {"installer":{"name":"uv","version":"0.12.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / ckmeans-1.1.0-cp311-abi3-macosx_11_0_arm64.whl

Download URL ckmeans-1.1.0-cp311-abi3-macosx_11_0_arm64.whl
Size 265.9 kB
Tags CPython 3.11 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
78d9f43a164cce2adc140af2b34ab0ebea2dae08f9d34e881da258d19591efd8
BLAKE2b-256 checksum
How to use checksums
5f309000a30c1675a5d40e9afdceb3a17a18bd46e8e4f59455e42d4d2bb9fd0c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.21 {"installer":{"name":"uv","version":"0.12.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / ckmeans-1.1.0-cp311-abi3-macosx_10_12_x86_64.whl

Download URL ckmeans-1.1.0-cp311-abi3-macosx_10_12_x86_64.whl
Size 273.2 kB
Tags CPython 3.11 abi3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
33974e2ad6ff6401218d02ac03f450a820e529ad90d8707eb71d1a460cbd1a02
BLAKE2b-256 checksum
How to use checksums
65ae242909b28fff5b50caf0e89c0e3b47c3d1877a50f146bfee5bbbad3be839
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.21 {"installer":{"name":"uv","version":"0.12.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release history Release notifications | RSS feed

This release

1.1.0 This release

17 release files

1.0.1

17 release files

1.0.0

17 release files

0.2.10

7 release files

0.2.7

8 release files

0.2.6

8 release files

0.2.5

8 release files

0.2.3

65 release files

0.2.2

65 release files

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