cartopy 试试? folium 说是设计目标就是用网络资源。要不试试自己给 folium 做个缓存?
如果情况复杂点比如你要求每个数字应该在 0~10 的范围,那就只能从你想要的联合分布出手,求边际分布然后慢慢采样了……
不过貌似幂律可能是充分非必要吧,我没认真证过,也懒得查书了,也就是应该有其他边际分布存在使得联合分布是 f(x1,x2...)=1/N 这样的均匀分布。
三楼方法没毛病,这些数就应该服从幂率分布。
ans = np.diff([0]+list(np.sort(random.randint(0,100,9)))+[100])
f(x1,x2....x10) 的联合分布应该是均匀的也就是 f(x1,...x10)=1/N ( N=100H10,H 是可重复组合的算符)也就是等概率地在所有和等于 100 的 10 个数里找到 10 个数的概率,但是边际分布(你可以理解是 f(x1) f(x2)...)是做不到这种“均匀”的,因为 E[xi]=50.5,E[x1+...x10]=505,这种分布是不存在的。
而边际分布是幂律分布的数才能满足 (x1,...x10) 这样一组 10 个数是被等概率地从 100H10 的空间中抽出。
正常,正常理解了用现成工具就成。想更进一步,无论是研究还是实现,需要更多数学(计算数学?)知识。比如梯度法的数值实现时的具体方法以及该方法的误差等等,学会这些自然什么都会了。简单的例子:微分方程很好列,比如弹簧或者串并联的弹簧组或者一些简单动力学体系,但如果希望用计算机做数值解,不是简单地做个差分就行的,许多算法 /分析手段(比如算子裂分)应运而生,懂这些自然懂实现。至于 k-means 一类的算法涉及的是其他数学领域,同样,能用数学语言写出推倒 /证明,实现就简单很多,如果停留在“我理解了这个东西的思想以及说明中提到的公式……”层面,自然很难实现。
具体看需求吧,如果工作需求偏数据向,学好统计 /概率 /信息论 /随机过程之类的才是硬道理,实现甚至很多算法本身只要做到知道个原理,知道个思想然后用一些工具比如 tensorflow/mathematica/matplotlib 撸出来……不过多学东西总是好的,先学最用得着最重要的比较现实。
马克思爷爷说过,经济独立才能人格独立。和年龄无关。你真正所渴望的可能是独立人格,是 own you own ass 的生活状态。这在中国目前这种父母包管,父母包办同时父母也包养的条件下无论是文化还是体质都很困难。哪怕到上大学,生活费的控制依然能让你感觉自己仍然是口爱的小宝宝。看在你这么识相地对一群大叔叫哥哥的份儿上,认真地建议你:和父母谈谈你的感受,想法和渴望。只要你爸比不是那种听都不听就一撇子照脸乎的家长,会有点成效的,也许达不到你的诉求,那也只能慢慢来,其实对抗压力、谋求自己所想,尤其是面对亲人压力,又不能有任何暴力态度的情况下,是十分困难的,这也正是独立人格所需求的坚忍品质。只要你父母比较开明,能看到你的变化、坚持,相信也会越来越好的。直到你自己开始有独立的经济。
或者这么告诉你,别光看贼吃肉,不见贼挨揍。own your own ass 的状态你看来是很开心,所承担压力的也很多。去和父母交涉,谈心,遇到挫折依然能够坚持,不耍小孩儿脾气,能做到心平气和,尊重、尊敬父母的前提下去聊这些诉求,也是该付出的。
没试过。但新版 numpy 可以使用 file handler,
o=open("a.txt","w")
o.write("\t")
np.savetxt(o,......)
两个方法本质是一样的,只是分布方法会引入划格子引起的偏差,不过数据量大,结果模糊个一丁点儿也就无所谓了吧。起始我倒是觉得这种问题排除那种每天随机抽点睡的傻逼,把时间做个转换:以每天 16:00 为 0:00,次日 16:00 为 24:00 (t=(t+16) %24),然后直接求平均再转化回来(tmean=(tmean+16)%24)就行了吧,运算的时候排除掉 18 点之前睡觉的就行了。结果很粗略但是算得快啊,毕竟大部分人睡觉时间挺恒定的。
scipy.stats.circmean 方法比较适用于中 /小规模高计算精度要求。大数据允许一定小偏差可以用 circular mean = main angle of 1st harmonic of density kernel 的方法搞定:
1. 求密度分布:
d, _ = histogram(t, bins=1000, range=(0,24)) # 24 小时制,划 1000 个格子,精度为 24/1000 小时
2. 求 1st harmonics:
w = np.exp(-2j*np.pi*np.arange(1000) / 1000)
F1 = w.dot(d)
3. 求主幅角 (0, 2pi)
angle = np.angle(F1.conj())
if angle < 0:
....angle += 2*np.pi
4. 映射回平均值
t_mean = 24 * angle / (2 * np.pi) # 起始点是 0
这样空间复杂度小,算得快,数据量大的话这个方法好一些。
抱歉,是向量集 (cos(x), sin(x)), arctan2(mean_sin, mean_cos) 这样调用。写差了。
流程是先投影数据到角度 X->x in (0,2pi),然后求向量集 (sin(x),cos(x)) 的平均,然后用 arctan2 函数返回角度,根据周期再逆投影回数据。
@
ideacco 那个东西就叫 circular mean,具体看喂鸡百科。想自己写用 arctan2 函数。
from scipy.stats import circmean
circmean(t, high=12,low=0)
或者 24 小时制:
circmean(t, high=24,low=0)
用 get(),如果列有名字则用名字,否则用序号,get 如果没有则返回 None,方便处理。
In [2]: import pandas as pd
In [3]: df = pd.DataFrame(np.random.randn(8, 4))
In [4]: df
Out[4]:
0 1 2 3
0 -0.727670 -0.182557 -0.957270 -0.153352
1 -0.340649 -0.313155 -1.219515 0.082472
2 0.023527 0.496896 0.443117 -0.391405
3 -0.522745 0.879736 -1.358356 0.177883
4 -0.314936 -1.795936 -1.510872 1.039757
5 0.000243 -0.826999 -0.365514 -0.907249
6 0.058694 -0.521912 -0.863121 0.842308
7 0.846951 0.325337 -0.821745 0.111492
In [5]: df.get(0)
Out[5]:
0 -0.727670
1 -0.340649
2 0.023527
3 -0.522745
4 -0.314936
5 0.000243
6 0.058694
7 0.846951
Name: 0, dtype: float64
In [6]: df.get(1)
Out[6]:
0 -0.182557
1 -0.313155
2 0.496896
3 0.879736
4 -1.795936
5 -0.826999
6 -0.521912
7 0.325337
Name: 1, dtype: float64
In [7]: df.get(3)
Out[7]:
0 -0.153352
1 0.082472
2 -0.391405
3 0.177883
4 1.039757
5 -0.907249
6 0.842308
7 0.111492
Name: 3, dtype: float64
In [8]: df.get(4)
In [9]:
或者列有名字:
In [10]: df = pd.DataFrame(np.random.randn(8, 4), columns=['A', 'B', 'C', 'D'])
In [11]: df
Out[11]:
A B C D
0 -1.521750 -0.704144 -0.565343 -0.389537
1 -0.634391 0.672338 0.857965 0.294724
2 -0.764034 0.907585 -1.454368 -0.637835
3 -1.218633 -1.473434 1.441891 1.554465
4 -1.100643 -2.303968 -1.788275 -0.382192
5 1.476041 -0.735864 -0.359389 0.896467
6 1.662332 -0.944238 0.308855 -0.013283
7 1.357332 0.529256 1.169877 0.745932
In [12]: df.get('E')
In [13]: df.get('B')
Out[13]:
0 -0.704144
1 0.672338
2 0.907585
3 -1.473434
4 -2.303968
5 -0.735864
6 -0.944238
7 0.529256
Name: B, dtype: float64
实在不行还可以用 try except 吧。
先看独占和 R 星。没有独占和 R 星需求的话,建议 xbox x,个人感觉效果好,手柄爽一些。其实非常不推荐主机。买主机之后就发现游戏打折力度不高,FPS 游戏不买键鼠转换会打到想死,据不可靠评测,好像体验也不是很好,不知道 xbox 说官方出了会怎么样。希望楼主抑制住了冲动没入坑……游戏还是买个好点的电脑吧,PC 端的打折力度大,活动多,键鼠操作方便,想加手柄兼容性也高。
from scipy.special import loggamma
import numpy as np
def p(n, m):
return np.exp(loggamma(n+1)-loggamma(m+1))