首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将数组数字化到几个回收箱列表

将数组数字化到几个回收箱列表
EN

Stack Overflow用户
提问于 2014-02-12 22:36:46
回答 1查看 691关注 0票数 1

我遇到了需要numpy.digitize数组的情况。比如说,代码是

代码语言:javascript
运行
复制
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)

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

代码语言:javascript
运行
复制
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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-12 22:50:49

你可以通过一个清单理解来做这件事,这与你想象的很接近:

代码语言:javascript
运行
复制
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)]

结果:digitized == [0, 0, 2]

假设您希望digitized成为list of ints,这是可行的。如果您希望它是一个np.array或其他东西,那么将它重铸到您需要的任何东西都应该是简单明了的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21741378

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档