哪个大神能用python 判断质数做一个质数相加的内容,用函数做

python对数列中的每个元素都用一个函数计算_百度知道
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。
python对数列中的每个元素都用一个函数计算
1,1,能够直接对一个数列或者矩阵中的每个元素进行计算,0),能够输出(0,f(x)=0.输入一个数列比如(-5,2,4,-3;x&=0,最后输出位置对应的数列或函数作为结果。而且如果函数有分段的话,比如对x&0,f(x)=1定义函数的时候怎么写,0
我有更好的答案
&gt, -3, 0, 0)&&gt, 1, 1, 0)(0, 2, 4,0)print ab=[[0,1][i&0] for i in a]print tuple(b)------------------&&& (-5a=(-5,2,4,-3
采纳率:77%
来自团队:
0)&&&gt.., 1, 1;&gt, 0, 0]&0 else 0.&&& def f(x):; map(f,x)[0; x=(-5,2,4,-3;&gt.
return 1 if x&&&gt.. &gt
为您推荐:
其他类似问题
您可能关注的内容
python的相关知识
等待您来回答用Python写一个函数实现1+2+...+n的功能。
方法1、使用for循环
def accSum(n):
for i in range(1, n+1): #[1,n+1)
return sum
方法2、使用while循环
def accSum2(n):
while i &= n:
return sum
本文已收录于以下专栏:
相关文章推荐
转载:来自公众号『数据挖掘机养成记』
在Python中常常看到有这样的函数,它们的入口参数的个数是不定的。比如有如下代码
In: print zip([1, 2],[3, 4]...
      
脚本递归求斐波那契、阶乘和、累加和函数的运行。先在单线程中运行这三个函数,然后在多线程中做同样的事,以说明多线程的好处。以及子类化threading线程模块的Thread类...
网络绝对是任何系统的核心,对于容器而言也是如此。Docker 作为目前最火的轻量级容器技术,有很多令人称道的功能,如 Docker 的镜像管理。然而,Docker的网络一直以来都比较薄弱,所以我们有必要深入了解Docker的网络知识,以满足更高的网络需求。
返回比赛首页
给定n个数字和一个范围[x,y],求从这n个数字中任意取出一些数字,使得它们的和在范围[x,y]中有多少种取法。
俄罗斯方块
一、贪吃蛇
M-x snake,游戏界面如下图
二、俄罗斯方块
M-x tetris,游戏界面如下图
三、五子棋
M-x gomoku,游戏界面如下图
日常我们最经常用到求和函数,但是假若我们要加的参数个数不能确定时,怎么进行加和呢?废话不多说,直接上代码0x01
程序代码def add(*num):
Python 中求和函数 sum 用法今天在看《集体编程智慧》这本书的时候,看到一段Python代码,当时是百思不得其解,总觉得是书中排版出错了,后来去了解了一下sum的用法,看了一些Python大神...
第一种是for循环
第二种是while循环
第三种,导入模块的内建函数reduce
刚开始学 python,当想要自增运算的时候很自然的 a++,结果发现编译器是不认识 ++ 的,于是去网上搜了一下,结果发现一篇老外的问答很精彩,涉及到了 python 这个语言的设计原理
这篇博客可能比较low bee,但是对于一个掌握了其他语言,刚刚学习Python的人来说,也许会有一点点的帮助。在Cpp中,我们总是讨论前缀自增和后缀自增的效率问题:++i 是i=i+1,表达式的值就...
他的最新文章
讲师:王渊命
讲师:蔡栋
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)新手如何才能知道python有哪些内置函数或者模板可以用来实现我的功能? - 知乎10被浏览716分享邀请回答1添加评论分享收藏感谢收起利用python进行数据分析之数据聚合和分组运算 - splended - 博客园
随笔 - 6, 文章 - 0, 评论 - 0, 引用 - 0
对数据集进行分组并对各分组应用函数是数据分析中的重要环节。
group by技术
pandas对象中的数据会根据你所提供的一个或多个键被拆分为多组,拆分操作是在对象的特定轴上执行的,然后将一个函数应用到各个分组并产生一个新值,最后所有这些函数的执行结果会被合并到最终的结果对象中。
&&& from pandas import *
&&& df=DataFrame({'key1':['a','a','b','b','a'],'key2':['one','two','one','two','one'],'data1':np.random.randn(5),'data2':np.random.randn(5)})
data2 key1 key2
0 -1..865514
1 -1..309597
4 -0..444888
&&& grouped=df['data1'].groupby(df['key1'])
&&& grouped
&pandas.core.groupby.SeriesGroupBy object at 0x&#生成一个groupby对象,实际上还未进行任何计算,可对其调用方法进行计算
&&& grouped.mean()
Name: data1, dtype: float64#此外,可将列名直接当作分组对象,分组中,数值列会被聚合,非数值列会从结果中排除
&&& df.groupby('key1').mean()
-0..629657
&&& df.groupby(['key1','key2']).mean()
-0..789687
-1..309597
&无论你准准备拿groupby做什么,都可能会使用groupby的size方法,可以返回一个含有分组大小的series;
&&& df.groupby(['key1','key2']).size()
dtype: int64
&1、对分组进行迭代
groupby对象支持迭代,可以产生一组二元数组(由分组名称和数据块构成)
&&& for name,group in df.groupby('key1'):
print name
print group
data2 key1 key2
0 -1..865514
1 -1..309597
4 -0..444888
data2 key1 key2
&对于多重键的情况,元祖的第一个元素将会是由键值组成的元组
&&& for (k1,k2),group in df.groupby(['key1','key2']):
print k1,k2
print group
data2 key1 key2
0 -1..865514
4 -0..444888
data2 key1 key2
1 -1..309597
data2 key1 key2
data2 key1 key2
&groupby分组默认是在axis=0上进行分组的,通过设置也可以在其他轴上进行分组
&&& df.dtypes
dtype: object
&&& grouped=df.groupby(df.dtypes,axis=1)
&&& dict(list(grouped))
{dtype('O'):
one, dtype('float64'):
0 -1..865514
1 -1..309597
4 -0..444888}
&2、选取一个或一组列
对于DataFrame产生的groupby对象,如果用一个或一组列名对其进行索引,就能实现选取部分列进行聚合的目的
data2 key1 key2
0 -1..865514
1 -1..309597
4 -0..444888
&&& df.groupby('key1')['data1']
&pandas.core.groupby.SeriesGroupBy object at 0x04005FB0&
  &&& df.groupby('key1')['data1'].mean()  key1  a
-0.835257  b
尤其对于大数据集,可能只需要对部分列进行聚合
&&& df.groupby(['key1','key2'])[['data2']].mean()
#注意data2的形式,如果传入的是标量名称则不同
&&& df.groupby(['key1','key2'])['data2'].mean()
Name: data2, dtype: float64
&3、通过字典或Series进行分组
除数组以外,分组信息还可以以其他形式存在
&&& people=DataFrame(np.random.randn(5,5),columns=['a','b','c','d','e'],index=['joe','steve','wes','jim','travis'])
&&& people
-1.....975316
0.....150066
0.....308514
0.....722678
1.....732033
&&& people.ix[2:3,['b','c']]=np.nan
&&& people
-1.....975316
0.....150066
NaN -0..308514
0.....722678
1.....732033
&&& mapping={'a':'red','b':'red','c':'blue','d':'blue','e':'red'}
&&& by_column=people.groupby(mapping,axis=1)
&&& by_column.sum()
-0..662042
-0..388018
-0..023822
Series也有这样的功能,它可以被看作一个固定大小的映射
&&& map_series=Series(mapping)
&&& map_series
dtype: object
&&& people.groupby(map_series,axis=1).sum()
-0..662042
-0..388018
-0..023822
4、通过函数进行分组
相较于字典或者Series,python函数在定义分组映射关系时可以更具创意和抽象,任何被当作分组键的函数都会在索引值上被调用一次,其返回值被当作分组名称
#根据人名长度进行分组
&&& people.groupby(len).sum()
3 -0.....944124
0.....150066
1.....732033
将函数,列表,字典混用也没问题,因为任何东西最终会被转换为数组
&&& keyliat=['one','one','one','two','two']
&&& people.groupby([len,keyliat]).min()
3 one -1.....975316
0.....722678
0.....150066
1.....732033
5、根据索引级别分组
层次化索引的数据集最方便的地方在于它能够根据索引级别进行聚合,实现该目的,通过level关键字传入级别编号或名称即可。
&&& import numpy as np
&&& hief_df=DataFrame(np.random.randn(4,5),columns=columns)
&&& hief_df
-0.....015439
-1.....288524
1.....627444
-0.....997657
&&& hief_df.groupby(level='cty',axis=1).count()
&对于聚合,一般指的是能够从数组产生的标量值的数据转换过程,常见的聚合运算都有相关的统计函数快速实现,当然也可以自定义聚合运算
要使用自己的定义的聚合函数,需将其传入aggregate或agg方法即可
&&& df=DataFrame({'key1':['a','a','b','b','a'],'key2':['one','two','one','two','one'],'data1':np.random.randn(5),'data2':np.random.randn(5)})
data2 key1 key2
0 -1..269616
1 -0..037004
2 -0..527337
&&& grouped=df.groupby('key1')
&&& def peak_to_peak(arr):
return arr.max()-arr.min()
&&& grouped.agg(peak_to_peak)
&describe方法也可使用,但严格来说这些并非聚合运算
&&& grouped.describe()
-0..557368
-1..269616
-0..817550
-0..365484
-0..527337
-0..174776
&1、面向列的多函数应用
前面已经看到对Series或DataFrame列的聚合运算其实就是使用aggregate调用自定义函数或者直接调用诸如mean,std之类的方法;
但是当你希望对不同列使用不同的聚合函数时看如下事例:
&&& tips['tip_pct']=tips['tip']/tips['total_bill']
&&& tips[:6]
total_bill
sex smoker
&&& grouped=tips.groupby(['sex','smoker'])
&&& grouped_pct=grouped['tip_pct']
#可以将函数名以字符串的形式传入
&&& grouped_pct.agg('mean')
Name: tip_pct, dtype: float64
&如果传入一组函数或者函数名,则得到的DataFrame列就会以相应的函数命名,实际操作中并不一定需要接受默认的函数名,可以传入一个由(name,function)元组组成的列表当作一个有序映射。
&&& grouped_pct.agg(['mean','std'])
&&& grouped_pct.agg([('foo','mean'),('bar',np.std)])
对于DataFrame,还可以定义一组应用于全部列的函数,或不同的列应用不同的函数,这样会产生层次化索引的DataFrame
&&& functions=['count','mean','max']
&&& result=grouped['tip_pct','total_bill'].agg(functions)
&&& result
total_bill
&现在假设想要对不同的列应用不同的函数,具体的办法就是向agg传入一个从列名映射到函数的字典
&&& grouped.agg({'tip':np.max,'size':'sum'})
&&& grouped.agg({'tip_pct':['min','max','mean'],'size':'sum'})
0...182150
&2、以无索引的形式返回聚合数据
一般情况下,聚合数据都需要唯一的分组键组成的索引,但也可以通过向groupby传入as_index=False以禁用该功能
&&& tips.groupby(['sex','smoker'],as_index=False).mean()
sex smoker
total_bill
18....156921
17....182150
19....160669
22....152771
分组运算和转换
聚合仅是分组运算的一种,它是数据转换的一个特例,本节介绍transform和apply方法,他们能够执行更多其他的分组运算
以下是为一个DataFrame添加一个用于存放各索引组平均值的列,利用了先聚合再合并
data2 key1 key2
0 -1..567306
1 -0..078614
3 -1..666225
&&& k1_means=df.groupby('key1').mean()
&&& k2_means=df.groupby('key1').mean().add_prefix('mean_')
&&& k1_means
-0..055061
-0..013821
&&& k2_means
mean_data1
mean_data2
&&& merge(df,k2_means,left_on='key1',right_index=True)
data2 key1 key2
mean_data1
mean_data2
0 -1..567306
1 -0..078614
3 -1..666225
实际上可以对DataFrame进行transform方法,对比一下下面两种的区别,transform会将一个函数应用到各个分组
&&& df.groupby('key2').transform(np.mean)
1 -0..872420
3 -0..872420
&&& df.groupby('key2').mean()
-0..872420
1、apply,一般性的拆分-应用-合并
&最一般的groupby方法是apply,apply会将待处理的对象拆分为多个片段,然后对各个片段调用传入的函数,最后尝试将各片段组合在一起,
在groupby中,当你调用诸如describe之类的方法时,实际上是应用了快捷方式:f=lambda x:x.describe();grouped.apply(f)
&2、分位数和桶分析
pandas有一些能根据指定面元或样本分位数将数据拆分为多块的工具(比如cut和qcut),将这些数据跟groupby结合起来,就能轻松的对数据集的桶或分位数分析
&&&frame=DataFrame({'data1':np.random.randn(1000),'data2':np.random.randn(1000)})
&&& factor=cut(frame.data1,4)
&&& factor[:10]
(-1.35, 0.107]
(0.107, 1.563]
(-1.35, 0.107]
(-2.812, -1.35]
(0.107, 1.563]
(0.107, 1.563]
(-1.35, 0.107]
(-1.35, 0.107]
(-1.35, 0.107]
(1.563, 3.02]
Name: data1, dtype: category
Categories (4, object): [(-2.812, -1.35] & (-1.35, 0.107] & (0.107, 1.563] & (1.563, 3.02]]
cut返回的factor对象可直接用于groupby,分为长度相等的桶;
&&& def get_stats(group):
return {'min':group.min(),'max':group.max(),'count':group.count(),'mean':group.mean()}
&&& grouped=frame.data2.groupby(factor)
&&& grouped.apply(get_stats).unstack()
(-2.812, -1.35]
2...577103
(-1.35, 0.107]
2...812077
(0.107, 1.563]
2...654376
(1.563, 3.02]
2...387372
&若要得到大小相等的桶,使用qcut即可
&&& grouping=qcut(frame.data1,10,labels=False)
&&& grouped=frame.data2.groupby(grouping)
&&& grouped.apply(get_stats).unstack()
2...577103
2...046163
2...671060
2...252417
2...812077
1...448941
2...264740
2...076873
2...654376
2...387372
&3、用特定分组的值填充缺失值
对于缺失数据的清理工作,有时你会用dropna将其删除,有时可能会希望用一个固定值或由数据集本事衍生出来的值去填充na值,这时应该使用fillna工具
&&& from pandas import *
&&& s=Series(np.random.randn(6))
&&& s[::2]=np.nan
dtype: float64
&&& s.fillna(s.mean())
dtype: float64
假设需要对不同的分组填充不同的值,只需将数据分组,并使用apply和一个能够对各数据块调用的fillna的函数即可
&&& state=['ohio','new york','vermont','florida','oregen','nevada','california','idaho']
&&& group_key=['east']*4+['west']*4
&&& group_key
['east', 'east', 'east', 'east', 'west', 'west', 'west', 'west']
&&& data=Series(np.random.randn(8),index=state)
&&& data[['vermont','nevada','idaho']]=np.nan
california
dtype: float64
&&& data.groupby(group_key).mean()
dtype: float64
#利用分组平均去填充na值
&&& fill_mean=lambda g:g.fillna(g.mean())
&&& data.groupby(group_key).apply(fill_mean)
california
dtype: float64
4、分组加权平均数和相关系数
根据 拆分-应用-合并 范式,DataFrame的列与列之间或两个Series之间的运算成为一种标准运算
&&& df=DataFrame({'category':['a','a','a','a','b','b','b','b'],'data':np.random.randn(8),'weights':np.random.rand(8)})
a -1..247188
a -1..914525
b -0..204920
b -0..097827
b -0..105464
&&& grouped=df.groupby('category')
&&& get_wavg=lambda g:np.average(g['data'],weights=g['weights'])
&&& grouped.apply(get_wavg)
dtype: float64
5、面向分组的线性回归
你可以用groupby执行分组更为复杂的分组统计分析,只要函数返回的是pandas对象或者标量值即可。
透视表和交叉表
在pandas中,可以通过groupby功能以及重塑运算制作透视表,DataFrame还有一个pivot_table方法,此外还有一个顶级的pandas.pivot_table函数。
&&& tips.pivot_table(index=['sex','smoker'])
total_bill
&&& tips.pivot_table(['tip_pct','size'],index=['sex','day'],columns='smoker')
Female Fri
要使用其他的聚合函数,可将函数传入aggfunc参数即可
&&& tips.pivot_table('size',index=['sex','smoker'],columns='day',aggfunc=len)
&交叉表是一种用于计算分组频率的特殊透视表
&&& pd.crosstab([tips.time,tips.day],tips.smoker,margins=True)
#指定行与列交叉统计,margins参数用于是否进行分项小计
Dinner Fri苹果/安卓/wp
积分 850, 距离下一级还需 525 积分
权限: 自定义头衔, 签名中使用图片, 隐身
道具: 彩虹炫, 涂鸦板, 雷达卡, 热点灯, 金钱卡, 显身卡, 匿名卡, 抢沙发下一级可获得
权限: 设置帖子权限道具: 提升卡
购买后可立即获得
权限: 隐身
道具: 金钱卡, 彩虹炫, 雷达卡, 热点灯, 涂鸦板
开心签到天数: 30 天连续签到: 1 天[LV.5]常住居民I
本帖最后由 Iris2126 于
14:29 编辑
想回顾前文介绍的6种方法 请点击
7 – 数据框合并当我们有收集自不同来源的数据时,合并数据框就变得至关重要。假设对于不同的房产类型,我们有不同的房屋均价数据。让我们定义这样一个数据框:prop_rates = pd.DataFrame([, 12000], index=['Rural','Semiurban','Urban'],columns=['rates'])复制代码
现在可以把它与原始数据框合并:data_merged = data.merge(right=prop_rates, how='inner',left_on='Property_Area',right_index=True, sort=False)复制代码
这张透视表验证了合并成功。注意这里的 ‘values’无关紧要,因为我们只是单纯计数。
想了解更多请阅读Pandas Reference (merge)
8 – 给数据框排序Pandas可以轻松基于多列排序。方法如下:data_sorted = data.sort_values(['ApplicantIncome','CoapplicantIncome'], ascending=False)复制代码
注:Pandas 的“sort”函数现在已经不推荐使用,我们用 “sort_values”函数代替。
想了解更多请阅读Pandas Reference (sort_values)
9 – 绘图(箱型图&直方图)许多人可能没意识到Pandas可以直接绘制箱型图和直方图,不必单独调用matplotlib。只需要一行代码。举例来说,如果我们想根据贷款状态Loan_Status来比较申请者收入ApplicantIncome:data.boxplot(column=&ApplicantIncome&,by=&Loan_Status&)复制代码
data.hist(column=&ApplicantIncome&,by=&Loan_Status&,bins=30)复制代码
可以看出获得/未获得贷款的人没有明显的收入差异,即收入不是决定性因素。
想了解更多请阅读Pandas Reference (hist) | Pandas Reference (boxplot)
10 – 用Cut函数分箱有时把数值聚集在一起更有意义。例如,如果我们要为交通状况(路上的汽车数量)根据时间(分钟数据)建模。具体的分钟可能不重要,而时段如“上午”“下午”“傍晚”“夜间”“深夜”更有利于预测。如此建模更直观,也能避免过度拟合。
这里我们定义一个简单的、可复用的函数,轻松为任意变量分箱。#分箱:复制代码
想了解更多请阅读 Pandas Reference (cut)
11 – 为分类变量编码有时,我们会面对要改动分类变量的情况。原因可能是:有些算法(如罗吉斯回归)要求所有输入项目是数字形式。所以分类变量常被编码为0, 1….(n-1)
有时同一个分类变量可能会有两种表现方式。如,温度可能被标记为“High”, “Medium”, “Low”,“H”, “low”。这里 “High” 和 “H”都代表同一类别。同理, “Low” 和“low”也是同一类别。但Python会把它们当作不同的类别。
一些类别的频数非常低,把它们归为一类是个好主意。这里我们定义了一个函数,以字典的方式输入数值,用‘replace’函数进行编码。#使用Pandas replace函数定义新函数:复制代码
编码前后计数不变,证明编码成功。
想了解更多请阅读 Pandas Reference (replace)
12 – 在一个数据框的各行循环迭代这不是一个常见的操作。但你总不想卡在这里吧?有时你会需要用一个for循环来处理每行。例如,一个常见的问题是变量处置不当。通常见于以下情况:带数字的分类变量被当做数值。
(由于出错)带文字的数值变量被当做分类变量。所以通常来说手动定义变量类型是个好主意。如我们检查各列的数据类型:#检查当前数据类型:复制代码
这里可以看到分类变量Credit_History被当作浮点数。对付这个问题的一个好办法是创建一个包含变量名和类型的csv文件。通过这种方法,我们可以定义一个函数来读取文件,并为每列指派数据类型。举例来说,我们创建了csv文件datatypes.csv。#载入文件:复制代码
载入这个文件之后,我们能对每行迭代,把用‘type’列把数据类型指派到‘feature’ 列对应的项目。#迭代每行,指派变量类型。复制代码
现在信用记录这一列的类型已经成了‘object’ ,这在Pandas中代表分类变量。
想了解更多请阅读Pandas Reference (iterrows)
结语本文中我们介绍了多个可以帮助我们减轻数据探索、特征工程工作负担的函数。此外,我们也定义了一些函数,这些函数可以在不同的数据集上复用以获得相同效果。
原作者:AARSHAY JAIN 
翻译:数据工匠
原文地址:
支持楼主:、
购买后,论坛将把您花费的资金全部奖励给楼主,以表示您对TA发好贴的支持
载入中......
总评分:&经验 + 60&
论坛币 + 60&
谢谢楼主!
liangzhihua1971 发表于
谢谢楼主!
谢谢!!!!!!!!!
柳州不下雪 发表于
谢谢!!!!!!!!!
学习了&&感谢楼主
黝黑_蜗壳 发表于
学习了&&感谢楼主
学习,感谢
&nbsp&nbsp|
&nbsp&nbsp|
&nbsp&nbsp|
&nbsp&nbsp|
&nbsp&nbsp|
&nbsp&nbsp|
如有投资本站或合作意向,请联系(010-);
邮箱:service@pinggu.org
投诉或不良信息处理:(010-)
论坛法律顾问:王进律师

我要回帖

更多关于 python 求质数 的文章

 

随机推荐