我在matplotlib中制作了以下情节,其中包括其他内容plt.ticklabel_format(axis='y',style='sci',scilimits=(0,3)).这样产生一个y轴:
现在的问题是我希望y轴有嘀嗒声[0, -2, -4, -6, -8, -12].我玩过scilimits但却无济于事.
如何强制蜱只有一个有效数字而没有尾随零,并在需要时浮动?
MWE在下面添加:
import matplotlib.pyplot as plt
import numpy as np
t = np.arange(0.0, 10000.0, 10.)
s = np.sin(np.pi*t)*np.exp(-t*0.0001)
fig, ax = plt.subplots()
ax.tick_params(axis='both', which='major')
plt.ticklabel_format(style='sci', axis='x', scilimits=(0,3))
plt.plot(t,s)
plt.show()
Run Code Online (Sandbox Code Playgroud) 我试图找到一个很好的方法来绘制同一轴上的两个distplots(来自seaborn).它不像我想要的那样漂亮,因为直方图条是相互覆盖的.我不想使用countplot或barplot只是因为它们看起来不漂亮.当然,如果没有其他方式我会以这种方式做,但distplot看起来非常好.但是,如上所述,这些酒吧现在相互覆盖(见图).
因此,有没有办法将两个distplot频率条拟合到一个bin上,以便它们不重叠?或者把计数放在彼此之上?基本上我想在seaborn中这样做:
任何清理它的想法都是最受欢迎的.谢谢.
MWE:
sns.set_context("paper",font_scale=2)
sns.set_style("white")
rc('text', usetex=False)
fig, ax = plt.subplots(figsize=(7,7),sharey=True)
sns.despine(left=True)
mats=dict()
mats[0]=[1,1,1,1,1,2,3,3,2,3,3,3,3,3]
mats[1]=[3,3,3,3,3,4,4,4,5,6,1,1,2,3,4,5,5,5]
N=max(max(set(mats[0])),max(set(mats[1])))
binsize = np.arange(0,N+1,1)
B=['Thing1','Thing2']
for i in range(len(B)):
ax = sns.distplot(mats[i],
kde=False,
label=B[i],
bins=binsize)
ax.set_xlabel('My label')
ax.get_yaxis().set_visible(False)
ax.legend()
plt.show()
Run Code Online (Sandbox Code Playgroud)
寻找关于如何编写函数(或者可以推荐已经存在的函数)的提示,该函数计算数组中所有条目之间的差异,即对数组diff()中的所有条目组合的实现,而不仅仅是连续对.
这是我想要的一个例子:
# example array
a = [3, 2, 5, 1]
Run Code Online (Sandbox Code Playgroud)
现在我们想要应用一个函数,它将返回所有条目组合之间的差异.现在假设这length(a) == 4意味着组合的总数是,对于N = 4; N*(N-1)*0.5 = 6(如果a的长度为5,则组合的总数将为10,依此类推).所以函数应该为vector返回以下内容a:
result = some_function(a)
print result
array([-1, 2, -2, 3, -1, -4])
Run Code Online (Sandbox Code Playgroud)
因此'函数'将类似于pdist但不是计算欧几里德距离,它应该简单地计算沿一个轴的笛卡尔坐标之间的差异,例如,如果我们假设条目a是坐标,则计算z轴.可以注意到,我需要每个差异的符号来理解每个点所在的轴的哪一侧.
谢谢.
我又遇到了一个奇怪的问题.
假设我有以下虚拟数据框(通过演示我的问题):
import numpy as np
import pandas as pd
import string
# Test data frame
N = 3
col_ids = string.letters[:N]
df = pd.DataFrame(
np.random.randn(5, 3*N),
columns=['{}_{}'.format(letter, coord) for letter in col_ids for coord in list('xyz')])
df
Run Code Online (Sandbox Code Playgroud)
这会产生:
A_x A_y A_z B_x B_y B_z C_x C_y C_z
0 -1.339040 0.185817 0.083120 0.498545 -0.569518 0.580264 0.453234 1.336992 -0.346724
1 -0.938575 0.367866 1.084475 1.497117 0.349927 -0.726140 -0.870142 -0.371153 -0.881763
2 -0.346819 -1.689058 -0.475032 -0.625383 -0.890025 0.929955 0.683413 0.819212 0.102625
3 0.359540 …Run Code Online (Sandbox Code Playgroud) 当我尝试加载ipython笔记本时出现此非常奇怪的错误。以前从未有过,而且我无法回忆,记得对ipython做过任何愚蠢的事情:
Unreadable Notebook: /path/to/notebooks/results.ipynb NotJSONError('Notebook does not appear to be JSON: u\'{\\n "cells": [\\n {\\n "cell_type": "...',)
Run Code Online (Sandbox Code Playgroud)
其次是
400 GET /api/contents/results.ipynb?type=notebook&_=1440010858974 (127.0.0.1) 36.17ms referer=http://localhost:8888/notebooks/results.ipynb
Run Code Online (Sandbox Code Playgroud) 假设我的笔记本中有一个主单元格,让我们调用main. 我不想每次使用 main 时都运行一大堆单元格,但我必须这样做,因为这main取决于它们中的功能。
因此,如果main取决于 say 单元格,c1并且c2是否有特殊的魔法命令或可以放置在c1and 中的东西c2,它会告诉笔记本在我运行之前运行这些命令main。我的笔记本通常包含数百个单元格,因此从一开始就加载它们并不是真正的选择。
谢谢
附注。我完全知道我可以从笔记本中取出所有这些,然后导入全部。我特别不想那样做。
这是我想要做的一个例子:
import io
import pandas as pd
data = io.StringIO('''Fruit,Color,Count,Price
Apple,Red,3,$1.29
Apple,Green,9,$0.99
Pear,Red,25,$2.59
Pear,Green,26,$2.79
Lime,Green,99,$0.39
''')
df_unindexed = pd.read_csv(data)
df = df_unindexed.set_index(['Fruit', 'Color'])
Run Code Online (Sandbox Code Playgroud)
输出:
Out[5]:
Count Price
Fruit Color
Apple Red 3 $1.29
Green 9 $0.99
Pear Red 25 $2.59
Green 26 $2.79
Lime Green 99 $0.39
Run Code Online (Sandbox Code Playgroud)
现在假设我想计算"颜色"级别中的键数:
L = []
for i in pd.unique(df.index.get_level_values(0)):
L.append(range(df.xs(i).shape[0]))
list(np.concatenate(L))
Run Code Online (Sandbox Code Playgroud)
然后我将结果列表添加[0,1,0,1,0]为新列:
df['Bob'] = list(np.concatenate(L))
Run Code Online (Sandbox Code Playgroud)
如此:
Count Price Bob
Fruit Color
Apple Red 3 $1.29 0
Green 9 $0.99 1
Pear Red …Run Code Online (Sandbox Code Playgroud) 这是我要尝试做的事情:我想使用bash测量两根琴弦之间的Levensthein距离。我在这里找到了LD的实现。
现在,假设我有一些玩具数据,例如:
1 The brown fox jumped The green fox jumped
0 The red fox jumped The green fox jumped
1 The gray fox jumped The green fox jumped
Run Code Online (Sandbox Code Playgroud)
并说它存储在中data.test。
然后,我通过一个简单的awk命令将其过滤掉,1以此类推:
awk -F '\t' '{if ($1>0) print $2,t,$3}' data.test
Run Code Online (Sandbox Code Playgroud)
然后,此简单命令的第一个输出将是:
The brown fox jumped The green fox jumped
Run Code Online (Sandbox Code Playgroud)
现在,我想通过将输出直接管道传递到此函数(从以上链接中提取)来测量这两个句子之间的Levensthein距离:
function levenshtein {
if (( $# != 2 )); then
echo "Usage: $0 word1 word2" >&2
elif (( ${#1} < ${#2} …Run Code Online (Sandbox Code Playgroud) 在比较MATLAB和Python函数时,我得到了关于简单矩阵规范的两个截然不同的答案.
让
R =
0.9940 0.0773 -0.0773
-0.0713 0.9945 0.0769
0.0828 -0.0709 0.9940
Run Code Online (Sandbox Code Playgroud)
然后在MATLAB中:
>> norm(R)
ans =
1
Run Code Online (Sandbox Code Playgroud)
但在Python中
from scipy.linalg import norm
import numpy as np
print norm(R),np.linalg.norm(R)
1.73205080757 1.73205080757
Run Code Online (Sandbox Code Playgroud)
哪里
print scipy.__version__,np.__version__
0.14.0 1.9.0
Run Code Online (Sandbox Code Playgroud)
我是如何全面搞砸的呢?
如何关闭 Light Table 中的自动完成功能?
可能user.behaviors看起来是这样
[
[:app :lt.objs.style/set-skin "dark"]
;; Automagically closes parentheses
[:app :lt.objs.settings/pair-keymap-diffs]
[:editor :lt.objs.editor/wrap]
[:editor :lt.objs.editor/line-numbers]
[:editor :lt.objs.style/font-settings "Menlo" "9" "1.2"]
[:editor :lt.objs.style/set-theme "monokai"]
[:editor.clojure :lt.objs.langs.clj/print-length 1000]
;; Turn off autocomplete
[:editor :lt.plugins.auto-complete/auto-show-on-input]
]
Run Code Online (Sandbox Code Playgroud)
我尝试添加[:editor :lt.plugins.auto-complete/auto-show-on-input]但它不起作用。
我怎样才能得到这个输出?
'[{0} {1} {2} {3} {4} {6} {7} {8} {9}]'
Run Code Online (Sandbox Code Playgroud)
我试过这个
string_val ='{{{}}} '.format(range(10))
Run Code Online (Sandbox Code Playgroud)
但它给出了
'{[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]} '
Run Code Online (Sandbox Code Playgroud) 我有一堆大型矩阵需要重新格式化,理想情况下使用shell.
假设我将这些内容存储在example.csv中:
1,2,3
2,3,4
5,6,7
Run Code Online (Sandbox Code Playgroud)
然后我做
cat example.csv | tr ',' ' ' | awk '{print "["$0"]"}'
Run Code Online (Sandbox Code Playgroud)
要得到
[1 2 3]
[2 3 4]
[5 6 7]
Run Code Online (Sandbox Code Playgroud)
但我需要我的最终格式看起来如此
[[1 2 3]
[2 3 4]
[5 6 7]]
Run Code Online (Sandbox Code Playgroud)
那么如何使用sed,awk或类似的shell来完成这个呢?即前面[是示例的开头并附]加到示例的最后一行?
想象一下,我的.csv矩阵有几千列和行.
使用列表理解我可以创建像这样简单的东西
['X{}'.format(x) for x in range(2)]
Run Code Online (Sandbox Code Playgroud)
从而产生['X0', 'X1']. 但我想创建单独的多个输出字符串,最好来自同一个列表理解语句。
我希望我的输出['X0','Y0','Z0','X1','Y1' 'Z1']自然地类似于['X{},Y{},Z{}'.format(x,x,x) for x in range(2)],但不太符合要求。
关于如何在一行中完成此操作有什么想法吗?
编辑:它在一行上并不重要,但它会很好。