我需要从Python中的对数正态分布生成伪随机数.问题是我从对数正态分布的模式和标准偏差开始.我没有对数正态分布的均值或中值,也没有基础正态分布的任何参数.
numpy.random.lognormal取基础正态分布的均值和标准差.我试图从我的参数计算这些,但最后用四次函数.它有一个解决方案,但我希望有一个更简单的方法来做到这一点.
scipy.stats.lognorm采取我不理解的参数.我不是母语为英语的人,文档没有意义.
你能帮我吗?
这个问题很奇怪,因为我知道如何做某事,但是我不知道为什么我不能以另一种方式做。
假设简单的数据帧:
import pandasas pd
a = pd.DataFrame([[0,1], [2,3]])
Run Code Online (Sandbox Code Playgroud)
我可以很容易地对该数据帧进行切片,第一列是a[[0]],第二列是a[[1]]。简单不是吗?
现在,让我们拥有更复杂的数据框架。这是我的代码的一部分:
var_vec = [i for i in range(100)]
num_of_sites = 100
row_names = ["_".join(["loc", str(i)]) for i in
range(1,num_of_sites + 1)]
frame = pd.DataFrame(var_vec, columns = ["Variable"], index = row_names)
spec_ab = [i**3 for i in range(100)]
frame[1] = spec_ab
Run Code Online (Sandbox Code Playgroud)
数据框frame也是熊猫DataFrame,例如一个。我可以很容易地获得第二栏frame[[1]]。但是当我尝试时frame[[0]]出现错误:
Traceback (most recent call last):
File "<ipython-input-55-0c56ffb47d0d>", line 1, in <module>
frame[[0]]
File "C:\Users\Robert\Desktop\Záloha\WinPython-64bit-3.5.2.2\python- 3.5.2.amd64\lib\site-packages\pandas\core\frame.py", line 1991, in __getitem__ …Run Code Online (Sandbox Code Playgroud) 这是问题所在.我有两个向量列表,排序(我希望,但我可以对它们进行排序,如果它们不是),其中第一个列表中的第i个向量与第二个列表中的第i个向量一样多.我只想绘制它们.但我担心R不能列出列表的元素.任何想法如何解决?多谢.这是我试过的代码.
a<-c(2,1,5)
b<-c(2,2,2)
f<-c(4)
g<-c(1)
k<-list(a,f)
l<-list(b,g)
for(i in 1:2){
plot(l[i],k[i])}
Run Code Online (Sandbox Code Playgroud)
问题是
Error in xy.coords(x, y, xlabel, ylabel, log) :
(list) object cannot be coerced to type 'double'
Run Code Online (Sandbox Code Playgroud) 我需要从向量中删除前导和尾随缺失值 ( NA)。NA应保留数字之间的 s。请注意,我的下一步是索引另一个向量,NA并且只保留与第一个向量中位置相同的值。这是示例:
a <- c(NA, NA, NA, NA, NA, 5,2,3,1,2,1,5,2, NA, NA, 2,3,2,NA,NA,NA)
b <- sample(1:21)
Run Code Online (Sandbox Code Playgroud)
我想要的输出是:
a1 <- c(5,2,3,1,2,1,5,2,NA,NA,2,3,2)
# leading and trailing NAs removed
b1 <- b[6:18]
# subset with the indices kept in "a" above.
Run Code Online (Sandbox Code Playgroud)
我想我可以用条件循环来做到这一点,但我想对它进行矢量化。谢谢你的帮助!
我想制作绘图并使用滑块更改其属性。但标签文字matplotlib.widgets.Slider对我来说太小了。我上网寻找如何改变它的答案,但我没有运气。
代码的关键部分是:
E0_slider_ax = fig.add_axes([0.6, 0.2, 0.25, 0.03], axisbg=axis_color)
E0_slider = mw.Slider(E0_slider_ax, r'$\epsilon_0$', 1, 100, valinit = E0)
# I want to make r'$\epsilon_0$' bigger
Run Code Online (Sandbox Code Playgroud)
我尝试为标签制作文本,如下所示:
t = matplotlib.text.Text(r'$\epsilon_0$', size = 22)
E0_slider = mw.Slider(E0_slider_ax, label = t, valmin = 1, valmax = 100, valinit = E0)
Run Code Online (Sandbox Code Playgroud)
但它返回给我一个错误:
Traceback (most recent call last):
File "<ipython-input-53-2310b0749547>", line 1, in <module>
runfile('C:/Users/Robert/Desktop/multidif_S.py',
wdir='C:/Users/Robert/Desktop')
File "C:\Users\Robert\Desktop\WinPython-64bit-3.5.2.2\python-
3.5.2.amd64\lib\site-
packages\spyderlib\widgets\externalshell\sitecustomize.py", line 845, in
runfile
execfile(filename, namespace)
File "C:\Users\Robert\Desktop\WinPython-64bit-3.5.2.2\python-
3.5.2.amd64\lib\site-
packages\spyderlib\widgets\externalshell\sitecustomize.py", line 103, in …Run Code Online (Sandbox Code Playgroud) 我想cumsum在in pandas中应用数据帧python,但是没有零.我只想留下零并cumsum在数据帧上做.假设我有这样的数据帧:
import pandas as pd
df = pd.DataFrame({'a' : [1,2,0,1],
'b' : [2,5,0,0],
'c' : [0,1,2,5]})
a b c
0 1 2 0
1 2 5 1
2 0 0 2
3 1 0 5
Run Code Online (Sandbox Code Playgroud)
结果应该是
a b c
0 1 2 0
1 3 7 1
2 0 0 3
3 4 0 8
Run Code Online (Sandbox Code Playgroud)
任何想法如何避免循环?在R有ave功能的,但是我很新的python,我不知道.