所以我想这在技术上不是一个代码问题,但我确信在编写代码时会为其他人和我自己提出这个问题,所以希望它仍然是一个很好的发布在 SO 上的问题。
谷歌已经指导我对何时使用一个或另一个财务数字以及诸如此类的事情进行了很多很好的冗长解释。
但是我的特定上下文不适合,我想知道这里是否有人有一些见解。我需要对特定项目的“好”程度进行大量个人用户的投票。即,一定数量的用户各自给特定项目打分 0 到 10 之间,我想报告“典型”分数是多少。将几何和/或算术平均值报告为典型响应的直观原因是什么?
或者,就此而言,我最好报告中位数吗?
我想“最好”的方法可能涉及一些心理学......
无论如何,你有它。
谢谢!
我在2D中值滤波器(3x3窗口)中存在瓶颈,我在一组非常大的图像上使用,我想尝试优化它.我测试过scipy.ndimagemedian_filter,以及PIL,scipy.signal和scikits-image.然而,浏览SO我已经知道C中有一个快速的O(n)中值滤波器(恒定时间中的中值滤波,参见C中的滚动中值算法),我想知道我是否可以使用scipy在Python中实现它. weave.inline?有关替代路线的任何建议吗?
我有一大堆800 16位灰度图像,2048x2048px.它们是从一个BigTIFF文件中读取的,整个堆栈几乎不适合我的RAM(8GB).现在我需要进行中位投影.这意味着我想计算所有800帧中每个像素的中位数.Matlab中值函数失败,因为没有足够的内存可以为函数调用复制整个数组.什么是计算中位数的有效方法?
我曾尝试使用for循环来计算一次一个像素的中位数,但这仍然非常慢.
如何在python中为我的数据找到中位数附近的置信区间?
说我有数组
a = np.array([24, 38, 61, 22, 16, 57, 31, 29, 35])
Run Code Online (Sandbox Code Playgroud)
我想在中位数附近找到 80% 的置信区间。我如何在 python 中做到这一点?
我有一个看起来像这样的数组:
let arr = [1,2,3,4,5,6,7,8,9]
Run Code Online (Sandbox Code Playgroud)
我知道你可以得到min和max通过:
let min = arr.min()
let max = arr.max()
Run Code Online (Sandbox Code Playgroud)
但你怎么得到中位数?
我有一个包含一列的熊猫数据框,我想知道中位数的索引。也就是说,我这样确定中位数:
df.median()
这给了我中值,但我想知道该行的索引。是否可以确定这一点?对于长度不均匀的列表,我可以搜索具有该值的索引,但对于偶数列表长度,这将不起作用。有人可以帮忙吗?
这个问题在另一篇文章中被问到,答案基本上是搜索与中位数具有相同值的行。但就像我说的,这不适用于偶数长度的列表。
下面是一个最小示例(我在下面包含了 Wen 的建议):
df = pd.DataFrame(np.random.randn(6, 1), columns=list('A'))
df.median()
df.loc[df[0]==df[0].median()]
Out[120]:
Empty DataFrame
Columns: [0]
Index: []
Run Code Online (Sandbox Code Playgroud) 我在这个论坛上看到了一些关于应用带有移动窗口的中值滤波器的讨论,但我的应用程序有一个特殊的特性。
我有一个尺寸为750x12000x10000的 3D 数组,我需要应用一个中值滤波器来生成一个 2D 数组(12000x10000)。为此,每个中值计算都应考虑固定的邻域窗口(通常为100x100)和所有 z 轴值。矩阵中有一些零值,在计算中位数时不应考虑它们。为了处理真实数据,我使用numpy.memmap:
fp = np.memmap(filename, dtype='float32', mode='w+', shape=(750, 12000, 10000))
Run Code Online (Sandbox Code Playgroud)
为了处理使用 memmap 存储的真实数据,我的输入数组被细分为几个块,但为了提高我的测试速度,我将在这篇文章中使用一个减少的数组(11, 200, 300)和一个较小的窗口(11, 5, 5)或 (11, 50, 50) 并且我期望结果矩阵 (200, 300):
import numpy as np
from timeit import default_timer as timer
zsize, ysize, xsize = (11, 200, 300)
w_size = 5 #to generate a 3D window (all_z, w_size, w_size)
#w_size = 50 #to generate a 3D window (all_z, w_size, w_size) …Run Code Online (Sandbox Code Playgroud) 一组整数作为输入给出。您必须返回该集合的子集,以便该子集的均值 - 中位数是最大值。
{1,2,3,4}
Run Code Online (Sandbox Code Playgroud)
{1,2,4}
Run Code Online (Sandbox Code Playgroud)
{1,2,2,3,3}
Run Code Online (Sandbox Code Playgroud)
{2,2,3}
Run Code Online (Sandbox Code Playgroud) 我试图排序并找到一个只包含3到4个不同整数的整数字符串的中位数.
我正在处理的数字量大约为2千万到2千5百万,我应该对向量进行排序,每次将新整数添加到向量中时找到中位数,并将中位数添加到单独的"总计"变量中每次生成中位数时,它会汇总所有中位数.
1 Median: 1 Total: 1
1 , 2 Median: (1+2)/2 = 1 Total: 1 + 1 = 2
1 , 2 , 3 Median: 2 Total: 2 + 2 = 4
1 , 1 , 2 , 3 Median: (1+2)/2 = 1 Total: 4 + 1 = 5
1 , 1 , 1 , 2 , 3 Median: 1 Total: 5 + 1 = 6
Run Code Online (Sandbox Code Playgroud)
我试图找到一种方法来进一步优化我的代码,因为它不够高效.(必须在2s左右处理)有没有人知道如何进一步加快我的代码逻辑?
我目前在C++中使用2个堆或优先级队列.一个用作最大堆,另一个用作最小堆.
从数据结构中找到了寻找中位数的想法
You can use 2 heaps, that we will …Run Code Online (Sandbox Code Playgroud) 我需要生成一个数百万行的滑动窗口并计算第 3 列的中位数。我的数据看起来像这样,第 1 列始终相同,第 2 列等于行号,第 3 列是我需要中位数的信息为了:
HiC_scaffold_1 1 34
HiC_scaffold_1 2 34
HiC_scaffold_1 3 36
HiC_scaffold_1 4 37
HiC_scaffold_1 5 38
HiC_scaffold_1 6 39
HiC_scaffold_1 7 40
HiC_scaffold_1 8 40
HiC_scaffold_1 9 40
HiC_scaffold_1 10 41
HiC_scaffold_1 11 41
HiC_scaffold_1 12 41
HiC_scaffold_1 13 44
HiC_scaffold_1 14 44
HiC_scaffold_1 15 55
Run Code Online (Sandbox Code Playgroud)
我需要这样的结果,假设滑动窗口为 4 并四舍五入到最接近的整数。在真实数据集中,我可能会使用 1000 的滑动窗口:
HiC_scaffold_1 4 35
HiC_scaffold_1 5 37
HiC_scaffold_1 6 38
HiC_scaffold_1 7 39
HiC_scaffold_1 8 40
HiC_scaffold_1 9 40
HiC_scaffold_1 10 40 …Run Code Online (Sandbox Code Playgroud)