我想知道为什么numpy.zeros占用这么小的空间?
x = numpy.zeros(200000000)
Run Code Online (Sandbox Code Playgroud)
这不占用任何记忆,
x = numpy.repeat(0,200000000)
Run Code Online (Sandbox Code Playgroud)
占用约1.5GB.numpy.zeros会创建一个空指针数组吗?如果是这样,有没有办法在cython中更改它后将指针设置为空?如果我使用:
x = numpy.zeros(200000000)
x[0:200000000] = 0.0
Run Code Online (Sandbox Code Playgroud)
内存使用率上升.有没有办法改变一个值,然后将其改回原来在python或cython中使用的格式numpy.zeros?
我一直在寻找一种将数据拟合到 beta 二项式分布并估计 alpha 和 beta 的方法,类似于 VGAM 库中的 vglm 包的方式。我还没有找到如何在 python 中做到这一点。有一个 scipy.stats.beta.fit() ,但没有用于 beta 二项式分布的内容。有没有办法做到这一点?
有一种很好的方法可以在一个numpy布尔数组中找到一系列的Trues吗?如果我有一个像这样的数组:
x = numpy.array([True,True,False,True,True,False,False])
Run Code Online (Sandbox Code Playgroud)
我可以获得一系列索引:
starts = [0,3]
ends = [1,4]
Run Code Online (Sandbox Code Playgroud)
或任何其他适当的方式来存储此信息.我知道这可以通过一些复杂的while循环来完成,但我正在寻找一种更好的方法.
我想知道为什么我的答案在python和R中进行mann whitney u测试时是如此不同.在python中:
from scipy.stats import mannwhitneyu
t = [1,2,3]
g = [4,5,6,7,8,9]
mannwhitneyu(t,g)
(0.0, 0.014092901073953692)
Run Code Online (Sandbox Code Playgroud)
在R:
t = c(1,2,3)
g = c(4,5,6,7,8,9)
wilcox.test(t,g, paired = FALSE)
Wilcoxon rank sum test
data: t and g
W = 0, p-value = 0.02381
alternative hypothesis: true location shift is not equal to 0
Run Code Online (Sandbox Code Playgroud)
我想知道为什么python看起来更像是单面测试.
我正在尝试将我的数据拟合到 beta 二项式分布并估计 alpha 和 beta 形状参数。对于此分布,先验值取自 beta 分布。Python 没有用于 beta-binomial 的 fit 函数,但它有用于 beta 的函数。python beta 拟合和 R beta 二项式拟合很接近,但系统性地关闭。
回复:
library("VGAM")
x = c(222,909,918,814,970,346,746,419,610,737,201,865,573,188,450,229,629,708,250,508)
y = c(2,18,45,11,41,38,22,7,40,24,34,21,49,35,31,44,20,28,39,17)
fit=vglm(cbind(y, x) ~ 1, betabinomialff, trace = TRUE)
Coef(fit)
shape1 shape2
1.736093 26.870768
Run Code Online (Sandbox Code Playgroud)
Python:
import scipy.stats
import numpy as np
x = np.array([222,909,918,814,970,346,746,419,610,737,201,865,573,188,450,229,629,708,250,508], dtype=float)
y = np.array([2,18,45,11,41,38,22,7,40,24,34,21,49,35,31,44,20,28,39,17])
scipy.stats.beta.fit((y)/(x+y), floc=0, fscale=1)
(1.5806623978910086, 24.031893492546242, 0, 1)
Run Code Online (Sandbox Code Playgroud)
我已经这样做了很多次,似乎 python 系统地比 R 结果低一点。我想知道这是我的输入错误还是计算方式的不同?
python ×5
arrays ×2
beta ×2
numpy ×2
r ×2
scipy ×2
statistics ×2
binomial-cdf ×1
boolean ×1
cython ×1