python - 将数组数字化为多个 bin 列表

标签 python arrays sorting numpy binning

我有这样的情况,我需要 numpy.digitize 一个数组。 比如说,代码是

my_bin_list = [3, 6, 9]
my_array = np.array([1,2,3,4,5,6,7,8,9])
digitized = numpy.digitize(my_array, my_bins)

这工作得很好。但是,问题是我没有像示例中那样的 bin 列表,而是 my_array 中的每个元素都有一个 bin 列表(因为每个元素属于具有自己的 bin 的不同数据集),因此 len (my_array) == len(list_of_my_bin_lists)。这是list_of_my_bin_lists = [my_bin_list1, my_bin_list2, ...]。 所以我需要告诉 digitalize,对于第一个数组元素,它应该检查该元素属于 list_of_my_bin_lists[0] 的哪个 bin,对于带有 list_of_my_bin_lists[1] 的第二个元素>等等。 那可能吗?我会想象类似的事情

list_of_my_bin_lists = [[2, 6, 9], [4, 6, 8], [3, 5, 9]]
my_array = np.array([1, 3, 7])
digitized = numpy.digitize(my_array[i], my_bins[i] for i in len(my_array))

必须返回数字化:[0, 0, 2]

最佳答案

您可以使用接近您想象的列表理解来完成此操作:

import numpy as np

list_of_my_bin_lists = [[2, 6, 9], [4, 6, 8], [3, 5, 9]]
my_array = np.array([1, 3, 7])
digitized = [np.digitize(np.array([item]), bin_list)[0]
             for item, bin_list
             in zip(my_array, list_of_my_bin_lists)]

结果:数字化== [0, 0, 2]

假设您希望数字化成为int列表,则此方法有效。如果您希望它是一个 np.array 或其他东西,那么可以直接将其重新转换为您需要的任何内容。

关于python - 将数组数字化为多个 bin 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21741378/

相关文章:

python - Python 中的用户身份验证和文本解析

python - Django 在 PermissionDenied 异常引发时打印错误

python - 在 Django 中手动调用基于类的通用 View

javascript - 如何在 Javascript 中创建数组对象

java - 在 Java 中打印整数数组的唯一值的总和

python - 将另一个 numpy 数组作为数组附加到 numpy 数组,而不是它的元素

c++ - 合并排序不正确的输出

algorithm - n 个不同整数的数组中 k 个最小整数的就地排序算法

bash - 使用 'sort -g' bash 命令对带有指数的 float 进行排序

ruby-on-rails - 在 Ruby 中从现有数组创建新数组