jax.scipy.cluster.vq.vq#

jax.scipy.cluster.vq.vq(obs, code_book, check_finite=True)[source]#

将码本中的码分配给一组观测值。

JAX 对 scipy.cluster.vq.vq() 的实现。

根据最近的欧几里得距离,将 obs 中的每个观测向量分配给 code_book 中的一个码。

参数:
  • obs (ArrayLike) – 形状为 (M, N) 的观测向量数组。每行代表一个单独的观测值。如果 obs 是一维的,则每个条目都被视为长度为 1 的观测值。

  • code_book (ArrayLike) – 形状为 (K, N) 的码数组。每行代表一个单独的码向量。如果 code_book 是一维的,则每个条目都被视为长度为 1 的码。

  • check_finite (bool) – 在 JAX 中未使用

返回:

一个数组元组 (code, dist)

  • code 是一个形状为 (M,) 的整数数组,包含表示 obs 中每个条目在 code_book 中最接近条目的索引(0 <= i < K)。

  • dist 是一个形状为 (M,) 的浮点数数组,包含每个观测值与最近码之间的欧几里得距离。

返回类型:

tuple[Array, Array]

示例

>>> obs = jnp.array([[1.1, 2.1, 3.1],
...                  [5.9, 4.8, 6.2]])
>>> code_book = jnp.array([[1., 2., 3.],
...                        [2., 3., 4.],
...                        [3., 4., 5.],
...                        [4., 5., 6.]])
>>> codes, distances = jax.scipy.cluster.vq.vq(obs, code_book)
>>> print(codes)
[0 3]
>>> print(distances)
[0.17320499 1.9209373 ]