numpy/scipy中是否有一个函数可以让你从一个小的日志概率向量中采样多项式,而不会丢失精度?例:
# sample element randomly from these log probabilities
l = [-900, -1680]
Run Code Online (Sandbox Code Playgroud)
由于下溢,天真的方法失败了:
import scipy
import numpy as np
# this makes a all zeroes
a = np.exp(l) / scipy.misc.logsumexp(l)
r = np.random.multinomial(1, a)
Run Code Online (Sandbox Code Playgroud)
这是一次尝试:
def s(l):
m = np.max(l)
norm = m + np.log(np.sum(np.exp(l - m)))
p = np.exp(l - norm)
return np.where(np.random.multinomial(1, p) == 1)[0][0]
Run Code Online (Sandbox Code Playgroud)
这是最好/最快的方法,可以np.exp()在最后一步避免吗?
Seaborn如何计算其误差线?例:
import numpy as np; np.random.seed(22)
import seaborn as sns; sns.set(color_codes=True)
x = np.linspace(0, 15, 31)
data = np.sin(x) + np.random.rand(10, 31) + np.random.randn(10, 1)
ax = sns.tsplot(data=data, err_style="ci_bars")
plt.show()
Run Code Online (Sandbox Code Playgroud)
如何计算ci_bars(或ci_bands)?
是否可以tsplot在ci_bars样式中制作绘图,其中误差条或带对应于每个时间点的值的标准偏差?(而不是卑鄙的标准错误或bootstraps)
我跑ipython qtconsole.我想执行一个我在编辑器中单独编辑的文件.当我在编辑器中对文件进行更改并使用以下命令在IPython中重新运行它时:
%run myfile.py
Run Code Online (Sandbox Code Playgroud)
代码未更新.但是,如果我ipython从终端正常运行,那么这很好.我试着autoreload在QT控制台中使用:
%load_ext autoreload
%autoreload
Run Code Online (Sandbox Code Playgroud)
但它并没有解决问题.这有什么不对?
有没有办法制作包含所有julia依赖项的独立二进制文件,并且不要求用户安装julia?我认为可以使用Go语言.在像Python这样的其他语言中很难做到,我想知道Julia是否可以做到这一点,或者是否有计划这样做.
我正试图在seaborn中使用以下方法制作2x1子情节图:
data = pandas.DataFrame({"x": [1, 2, 4],
"y": [10,20,40],
"s": [0.01,0.1,1.0]})
plt.figure()
plt.subplot(2, 1, 1)
sns.pointplot(x="x", y="y", data=data)
plt.errorbar(np.arange(len(data["x"])), data["y"], yerr=data["s"])
plt.subplot(2, 1, 2)
sns.factorplot(x="x", y="y", data=data)
plt.show()
Run Code Online (Sandbox Code Playgroud)
它产生两个独立的数字,而不是一个带有两个子图的单个数字.为什么它会这样做?如何为多个单独的子图调用seaborn?
我试着查看下面引用的帖子,但我看不到即使factorplot首先调用也可以添加子图.有人能举例说明吗?这会有所帮助.我的尝试:
data = pandas.DataFrame({"x": [1, 2, 4],
"y": [10,20,40],
"s": [0.01,0.1,1.0]})
fig = plt.figure()
sns.pointplot(x="x", y="y", data=data)
ax = sns.factorplot(x="x", y="y", data=data)
fig.add_subplot(212, axes=ax)
plt.errorbar(np.arange(len(data["x"])), data["y"], yerr=data["s"])
plt.show()
Run Code Online (Sandbox Code Playgroud) 我在pandas中有一个简单的数据框,它有两个数字列.我想通过pandas使用matplotlib从列中制作直方图.以下示例不起作用:
In [6]: pandas.__version__
Out[6]: '0.14.1'
In [7]: df
Out[7]:
a b
0 1 20
1 2 40
2 3 30
3 4 30
4 4 3
5 3 5
In [8]: df.plot(kind="hist")
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-8-4f53176a4683> in <module>()
----> 1 df.plot(kind="hist")
/software/lib/python2.7/site-packages/pandas/tools/plotting.pyc in plot_frame(frame, x, y, subplots, sharex, sharey, use_index, figsize, grid, legend, rot, ax, style, title, xlim, ylim, logx, logy, xticks, yticks, kind, sort_columns, fontsize, secondary_y, **kwds)
2095 klass = _plot_klass[kind]
2096 else:
-> …Run Code Online (Sandbox Code Playgroud) 在emacs中查看和编辑制表符分隔文本文件的正确方法是什么,就好像它们是电子表格一样?
如果我通过使用在emacs中编写tsv文件C-q TAB,它有令人讨厌的怪癖,标签不是等间隔的.能够编辑单元格并让emacs自动重新排列以便它出现在列中,这类似于表格模式,这将是一件好事.但是,我不想创建一个表,我只想编辑一个tsv文件.我不知道如何做到这一点org-mode.这有内置模式吗?
例如,使用org-mode,我可以使选项卡显示为等间隔,但当其中一个单元格中有更多文本时,emacs不会自动重新排列列.这样做的正确方法是什么?
我在python中的rpy2中有一个数据帧,我想从中提取列.这个R代码的rpy2等价物是多少?
df[,c("colA", "colC")]
这可以获得第一列:
mydf.rx(1)
但是我如何拉出一组列,例如第1列,第3列和第5列?
mydf.rx([1,3,5])
不起作用.也不是:
mydf.rx(rpy2.robjects.r.c([1,3,5]))
我尝试使用来自 GitHub 的 hmmlearn来运行二进制隐藏马尔可夫模型。这不起作用:
import hmmlearn.hmm as hmm
transmat = np.array([[0.7, 0.3],
[0.3, 0.7]])
emitmat = np.array([[0.9, 0.1],
[0.2, 0.8]])
obs = np.array([0, 0, 1, 0, 0])
startprob = np.array([0.5, 0.5])
h = hmm.MultinomialHMM(n_components=2, startprob=startprob,
transmat=transmat)
h.emissionprob_ = emitmat
# fails
h.fit([0, 0, 1, 0, 0])
# fails
h.decode([0, 0, 1, 0, 0])
print h
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
ValueError:无法连接零维数组
使用此模块的正确方法是什么?注意我使用的是与 sklearn 分离的 hmmlearn 版本,因为显然 sklearn 不再维护 hmmlearn。
python machine-learning time-series hidden-markov-models hmmlearn
如何更改seaborn使用的颜色顺序?例子:
import seaborn as sns
import pandas
data = pandas.DataFrame({"x": [1,2,3], "y": [1,1,1], "color": ["a", "b", "c"]})
sns.pointplot(x="x", y="y", hue="color", data=data)
Run Code Online (Sandbox Code Playgroud)
如何更改“色调”中默认调色板的颜色分配?例如,不是从调色板中选择(蓝色,绿色,红色),而是使用(绿色,蓝色,红色)?我想保持相同的调色板,只是改变颜色的顺序。
如何查看ggplot2使用给定调色板的离散类别使用的颜色,如啤酒机的“ Set1”或“ Set2”?即对于给定的类别集,将使用什么颜色?
我正在使用以下命令在 matplotlib/seaborn 中绘制子图:
plt.figure()
s1 = plt.subplot(2, 1, 1)
# plot 1
# call seaborn here
s2 = plt.subplot(2, 1, 2)
# plot 2
plt.tight_layout()
plt.show()
Run Code Online (Sandbox Code Playgroud)
我遇到了标记被轴隐藏的常见问题(当绘图靠近图形边缘时添加边距)。当我尝试调整边距时,它不起作用:
s1 = plt.subplot(2, 1, 1)
s1.margins(0.05)
Run Code Online (Sandbox Code Playgroud)
它没有给出错误,但也没有设置边距。
这是一个完整的例子:
gammas = sns.load_dataset("gammas")
s = plt.subplot(1, 1, 1)
# this does not change the x margins
s.get_axes().margins(x=0.05, y=0.01)
ax = sns.tsplot(time="timepoint", value="BOLD signal",
unit="subject", condition="ROI",
err_style="ci_bars",
interpolate=False,
data=gammas)
plt.show()
Run Code Online (Sandbox Code Playgroud)
在上面,我试图使 x 边距更大,但 的x参数margins()似乎没有效果。如何才能做到这一点?
python ×9
matplotlib ×5
seaborn ×4
r ×2
colorbrewer ×1
compilation ×1
csv ×1
dataframe ×1
emacs ×1
executable ×1
ggplot2 ×1
hmmlearn ×1
ipython ×1
julia ×1
numpy ×1
pandas ×1
precision ×1
probability ×1
qt ×1
rpy2 ×1
scipy ×1
spreadsheet ×1
time-series ×1