我有一个数据结构,如下所示:
不同年份的三个城市的人口如下.
Name 1990 2000 2010
A 10 20 30
B 20 30 10
C 30 10 20
Run Code Online (Sandbox Code Playgroud)
我用a defaultdict来存储数据.
from collections import defaultdict
cityPopulation=defaultdict(list)
cityPopulation['A']=[10,20,30]
cityPopulation['B']=[20,30,10]
cityPopulation['C']=[30,10,20]
Run Code Online (Sandbox Code Playgroud)
我想defaultdict根据列表中的特定列(年份)对其进行排序.比如说,1990年的排序,应该给C,B,A,而2010年的排序应该给A,C,B.
此外,这是存储数据的最佳方式吗?当我改变人口价值时,我希望它是可变的.
为了得到x轴是日期的条形,我做的是这样的:
import numpy as np
import matplotlib.pyplot as plt
import datetime
x = [datetime.datetime(2010, 12, 1, 0, 0),
datetime.datetime(2011, 1, 1, 0, 0),
datetime.datetime(2011, 5, 1, 1, 0)]
y = [4, 9, 2]
ax = plt.subplot(111)
barWidth=20
ax.bar(x, y, width=barWidth)
ax.xaxis_date()
plt.show()
Run Code Online (Sandbox Code Playgroud)

但是,图不以x为中心.如果以前使用过ax.bar(x-barWidth/2.,y,width = barWidth)来获取以x为中心的条形.当x轴值是日期时,有没有办法得到相同的?
我使用条形图来指示每个组的数据.这些条中的一些彼此显着不同.如何指出条形图中的显着差异?
import numpy as np
import matplotlib.pyplot as plt
menMeans = (5, 15, 30, 40)
menStd = (2, 3, 4, 5)
ind = np.arange(4) # the x locations for the groups
width=0.35
p1 = plt.bar(ind, menMeans, width=width, color='r', yerr=menStd)
plt.xticks(ind+width/2., ('A', 'B', 'C', 'D') )
Run Code Online (Sandbox Code Playgroud)
我的目标是

我有一些非常简单的案例,可以将工作分解并分配给工人.我从这里尝试了一个非常简单的多处理示例:
import multiprocessing
import numpy as np
import time
def do_calculation(data):
rand=np.random.randint(10)
print data, rand
time.sleep(rand)
return data * 2
if __name__ == '__main__':
pool_size = multiprocessing.cpu_count() * 2
pool = multiprocessing.Pool(processes=pool_size)
inputs = list(range(10))
print 'Input :', inputs
pool_outputs = pool.map(do_calculation, inputs)
print 'Pool :', pool_outputs
Run Code Online (Sandbox Code Playgroud)
上面的程序产生以下输出:
Input : [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
0 7
1 7
2 7
5 7
3 7
4 7
6 7
7 7
8 6 …Run Code Online (Sandbox Code Playgroud) 我使用LaasoCVfrom sklearn来选择最佳模型是通过交叉验证选择的.我发现如果我使用sklearn或matlab统计工具箱,交叉验证会得到不同的结果.
我使用matlab并复制了http://www.mathworks.se/help/stats/lasso-and-elastic-net.html中给出的示例
来获取这样的数字

然后我保存了matlab数据,并尝试用laaso_pathfrom 复制数字sklearn,我得到了

虽然这两个数字之间有一些相似之处,但也存在一定的差异.据我所知,参数lambdain matlab和alphain sklearn是相同的,但是在这个图中似乎存在一些差异.有人可以指出哪一个是正确的,还是我错过了什么?此外,获得的系数也不同(这是我主要关心的问题).
Matlab代码:
rng(3,'twister') % for reproducibility
X = zeros(200,5);
for ii = 1:5
X(:,ii) = exprnd(ii,200,1);
end
r = [0;2;0;-3;0];
Y = X*r + randn(200,1)*.1;
save randomData.mat % To be used in python code
[b fitinfo] = lasso(X,Y,'cv',10);
lassoPlot(b,fitinfo,'plottype','lambda','xscale','log');
disp('Lambda with min MSE')
fitinfo.LambdaMinMSE
disp('Lambda with 1SE')
fitinfo.Lambda1SE
disp('Quality of Fit')
lambdaindex = …Run Code Online (Sandbox Code Playgroud) 是否有可能使x-tick标签跨越两条线?比方说,如果我的x-tick标签是
January 2008, February 2008, March 2008
Run Code Online (Sandbox Code Playgroud)
我想要他们
January February March
2008 2008 2008
Run Code Online (Sandbox Code Playgroud)
我不想旋转它们.
什么是antialiased在matplotlib.collections和你如何设置它的参数?
我想绘制具有不同y轴的曲线,它们共享相同的x轴.我之前使用过该twinx功能,但它将它们绘制在图的不同侧面.有没有办法在左侧绘制它们.我正在寻找类似以下的东西
但是两个轴都在同一侧.上面示例的代码在这里.
在不同的情况下,可以按某种特定顺序绘制曲线,因为z顺序不起作用 twinx
我有许多大型(> 100,000,000)整数列表,其中包含许多重复项.我想得到每个元素出现的索引.目前我正在做这样的事情:
import numpy as np
from collections import defaultdict
a = np.array([1, 2, 6, 4, 2, 3, 2])
d=defaultdict(list)
for i,e in enumerate(a):
d[e].append(i)
d
defaultdict(<type 'list'>, {1: [0], 2: [1, 4, 6], 3: [5], 4: [3], 6: [2]})
Run Code Online (Sandbox Code Playgroud)
这种迭代每个元素的方法是耗时的.有没有一种有效或矢量化的方法来做到这一点?
Edit1 我在下面尝试了Acorbe和Jaime的方法
a = np.random.randint(2000, size=10000000)
Run Code Online (Sandbox Code Playgroud)
结果是
original: 5.01767015457 secs
Acorbe: 6.11163902283 secs
Jaime: 3.79637312889 secs
Run Code Online (Sandbox Code Playgroud) 将新列添加到data.table从磁盘加载的列时,将复制该列.
library('data.table')
dt <- data.table(a=1,b=2)
save.image("test.RData")
load("test.RData")
dt
$ a b
$1: 1 2
class(dt)
$[1] "data.table" "data.frame"
address(dt)
$[1] "00000000046F1F38"
dt[, b := NULL]
address(dt)
$[1] "00000000046F1F38"
dt[, c := 2]
address(dt)
$[1] "000000000D815618"
Run Code Online (Sandbox Code Playgroud)
这是一个错误还是我做错了什么?我正在使用1.9.6data.table包.
python ×8
matplotlib ×5
data.table ×1
datetime ×1
defaultdict ×1
dictionary ×1
figure ×1
image ×1
matlab ×1
numpy ×1
plot ×1
python-2.7 ×1
r ×1
scikit-learn ×1
sorting ×1
statistics ×1