首页   注册   登录
 necomancer 最近的时间轴更新

necomancer

V2EX 第 155048 号会员,加入于 2016-01-12 03:48:51 +08:00
necomancer 最近回复了
from scipy.special import loggamma
import numpy as np
def p(n, m):
return np.exp(loggamma(n+1)-loggamma(m+1))
@iPhonePKAndroid
全排列:
from math import gamma
def p(n,m):
return gamma(n)/gamma(m)
@iPhonePKAndroid 全排列:
def p(n,m):
10 天前
回复了 cyy564 创建的主题 Python 请教一下 Python 中列表字典清洗数据的问题
@cyy564 我在 #2 已经说了,这个需要先排序。pandas 可以无视顺序。所以数据量小考虑直接 python sorted + itertools.groupby,数据量大一些考虑 pandas.DataFrame.groupby,如果超超超大就考虑 #1 的办法。
10 天前
回复了 cyy564 创建的主题 Python 请教一下 Python 中列表字典清洗数据的问题
Sorry,

ret = {}
for i in l:
....if not ret.get(i['type']):
........ret[i['type']] = 0
...ret[i['type']] +=1
10 天前
回复了 cyy564 创建的主题 Python 请教一下 Python 中列表字典清洗数据的问题
@cyy564 百分比很好统计:

ret = {}
for i in l:
....if not ret.get(i['type']):
........ret[i['type']] = 0
...ret.get(i['type']) +=1

基本上在不知道 type 有多少的情况下也能轻松统计
10 天前
回复了 cyy564 创建的主题 Python 请教一下 Python 中列表字典清洗数据的问题
from itertools import groupby
[ list(g) for c, g in groupby(lst, key=(lambda x : x.get('type'))) ]
10 天前
回复了 cyy564 创建的主题 Python 请教一下 Python 中列表字典清洗数据的问题
数据少的话:
lst = sorted(l, key=(lambda x : x.get('type')))
ret = [[]]
for prv, nxt in zip(lst[:-1], lst[1:]):
....tmp = ret[-1]
....tmp.append(prv)
....if prv['type']!=nxt['type']:
........ret.append([])
tmp = ret[-1]
tmp.append(t[-1])
然后取 ret 里最多的,或者直接用 groupby
[ list(g) for c, g in groupby(lst, key=(lambda x : x.get('type'))) ]
但是都需要排序。

或者用 pandas:
import pandas as pd
l= [{'name': 'aa', 'type': '游戏'},
{'name': 'cc', 'type': '学习'},
{'name': 'bb', 'type': '游戏'}] # 可以不用考虑顺序

list(pd.DataFrame(l).groupby('type')) 可以搞定,输出是 n 个 categories 的 tuple 的 list

[(分组名 1,分组 1 数据的 dataframe),(分组名 2,分组 2 数据的 dataframe)...],数据大小可以用 dataframe 的 shape 来确定。

In [40]: list(pd.DataFrame(l).groupby('type'))
Out[40]:
[('学习', name type
1 cc 学习), ('游戏', name type
0 aa 游戏
2 bb 游戏)]

In [41]: p=list(pd.DataFrame(l).groupby('type'))[1][1]

In [42]: p.shape
Out[42]: (2, 2)

In [43]: p
Out[43]:
name type
0 aa 游戏
2 bb 游戏

对一定量的数据,pandas 就可以有很高的处理效率了,如果数据量再大,考虑上 #1 的方法吧。
直接用 * 是矩阵乘法吗……别的不知道,numpy 下是批量相乘吧……

numpy 里 x_cpu.dot(x_cpu) 才是矩阵乘法。
17 天前
回复了 cunzhen 创建的主题 PHP 怎么让网页处于一直加载中?
我发现很多网站因为有 google 的 js,字体等一系列东西会有一个非常非常长的加载时间……
关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1050 人在线   最高记录 4019   ·  
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.1 · 7ms · UTC 00:03 · PVG 08:03 · LAX 16:03 · JFK 19:03
♥ Do have faith in what you're doing.
沪ICP备16043287号-1