Python中使用numpy的高级直方图用法
我需要在大量数据中快速执行此操作,因此理想情况下,我希望使用诸如numpy之类的快速方法。我通常只写一个循环,但是python太慢了。问题是: 我想根据另一个数组的存储箱相加。例如,我有三个Python中使用numpy的高级直方图用法,python,numpy,Python,Numpy,我需要在大量数据中快速执行此操作,因此理想情况下,我希望使用诸如numpy之类的快速方法。我通常只写一个循环,但是python太慢了。问题是: 我想根据另一个数组的存储箱相加。例如,我有三个 weights = [100, 130, 112, 150] ages = [1, 14, 15, 25] 我想根据年龄和0-9、10-19、20-29的箱子来计算重量。所以我得到[100130+112150]->[100242,150]作为我的最终结果 我目前的理解是,我只能对与之组合的数组求和。也就是
weights = [100, 130, 112, 150]
ages = [1, 14, 15, 25]
我想根据年龄和0-9、10-19、20-29的箱子来计算重量。所以我得到[100130+112150]->[100242,150]作为我的最终结果
我目前的理解是,我只能对与之组合的数组求和。也就是说,如果我对年龄进行分类,我只能得到年龄的总和
我也想知道如何做好这件事,在未来,我可能需要做的不是求和,而是求平均,而不仅仅是求和。感谢您的帮助。这可以通过简单的列表理解和一些numpy逻辑函数来完成,而且不仅仅限于求和
import numpy as np
ages = [1, 14, 15, 25]
weights = np.array([100, 130, 112, 150]) # easier indexing with a np.array
bin_left_marks = np.arange(0, 40, 10)
my_func = np.sum
my_binned_aggregation = [my_func(weights[np.where(np.logical_and(bin_left_marks[i] <= ages, ages < bin_left_marks[i+1]))]) for i in range(len(bin_left_marks) - 1)]
基本上,对于每个容器,找到与该容器匹配的年龄列表的索引,并相应地聚合权重列表。
祝你好运
显然,可以通过拆分一个线性行、使用直接循环等方式来减少丑陋。此解决方案非常简洁。谢谢您的帮助。我担心我会因为分数为负数而得不到问题。我想这可能是因为我的问题很模糊,但真正的问题是我不知道该朝哪个方向走,但你给我指出了正确的方向。我现在要研究这段代码。我认为这实际上是因为您没有包括任何自己的尝试或显示出足够的努力。下一次。。。