滚动函数python 函数移动规律

python中的滑动窗口函数:rolling().var()

滑动窗口函数,之前不知道 ,还自己写了个,,

创新互联公司是一家专业提供铜山企业网站建设,专注与成都网站建设、成都网站设计H5页面制作、小程序制作等业务。10年已为铜山众多企业、政府机构等服务。创新互联专业网络公司优惠进行中。

df.rolling().sum()

df.rolling().var()

怎样python 写一个扑克和骰子的程序,模拟的5骰子的滚动,至多三次,具体要求如下:

参考下面的代码.

play 可能有问题,主要是没说清楚在保留牌的时候, 输入Ace 或者 "Ace Ace" 有什么区别,到底是输入一次 Ace 保留手上所有的 Ace 还是只保留一个,这个没说清楚。看例子,这两种用法都有,我按照输入了几个就保留几个来做的。

simulate 没问题,和图片中的结果完全一样

必须用 python 3

import random

import collections

_dice_type = ['Ace', 'King', 'Queen', 'Jack', '10', '9']

_hand_mapping = collections.OrderedDict([

('5kind',    'Five of a kind'),

('4kind',    'Four of a kind'),

('full',     'Full house'),

('straight', 'Straight'),

('3kind',    'Three of a kind'),

('2pair',    'Two pair'),

('1pair',    'One pair'),

('bust',     'Bust'),

])

def _check_hand(dices):

counter = collections.Counter(dices)

if len(counter) == 1:

return '5kind'

sorted5 = counter.most_common(5)

if sorted5[0][1] == 4:

return '4kind'

if sorted5[0][1] == 3:

if sorted5[1][1] == 2:

return 'full'

else:

return '3kind'

if sorted5[0][1] == 2:

if sorted5[1][1] == 2:

return '2pair'

else:

return '1pair'

if len(counter) == 5:

dtype = sorted5[0][0]

for x in sorted5:

if dtype != x[0]:

break

dtype += 1

else:

return 'straight'

return 'bust'

def play():

dices = []

retry = 0

while True:

remain = 5 - len(dices)

if remain = 0:

break

dices.extend([random.randint(0,5) for x in range(remain)])

print("The roll is: {}".format(

" ".join([_dice_type[d] for d in sorted(dices)])

))

print("It is a {}".format(_hand_mapping[_check_hand(dices)]))

if retry  1:

break

prompt = "Which dice do you want to keep for the {} roll? ".format(

"second" if retry == 0 else "third"

)

while True:

answer = input(prompt).lower()

if answer == 'all':

break

answer = [x.capitalize() for x in answer.split()]

if set(answer).issubset(set(_dice_type)):

break

print("That is not possible, try again!")

retry += 1

if answer == 'all':

print("Ok, done")

break

tmp = dices

dices = []

for x in tmp:

if _dice_type[x] in answer:

dices.append(x)

answer.remove(_dice_type[x])

def simulate(n, debug=False):

result = dict.fromkeys(_hand_mapping.keys(), 0)

for _ in range(n):

dices = [random.randint(0,5) for x in range(5)]

if debug:

print("DEBUG:", " ".join([_dice_type[d] for d in sorted(dices)]))

result[_check_hand(dices)] += 1

for k, v in _hand_mapping.items():

cnt = result[k]

print("{:16s}: {:.2f}%".format(v, 100*cnt/n))

Python 之内置函数:filter、map、reduce、zip、enumerate

这几个函数在 Python 里面被称为高阶函数,本文主要学习它们的用法。

filter 函数原型如下:

第一个参数是判断函数(返回结果需要是 True 或者 False),第二个为序列,该函数将对 iterable 序列依次执行 function(item) 操作,返回结果是过滤之后结果组成的序列。

简单记忆:对序列中的元素进行筛选,获取符合条件的序列。

返回结果为: ,使用 list 函数可以输入序列内容。

map 函数原型如下:

该函数运行之后生成一个 list,第一个参数是函数、第二个参数是一个或多个序列;

下述代码是一个简单的测试案例:

上述代码运行完毕,得到的结果是: 。使用 print(list(my_new_list)) 可以得到结果。

map 函数的第一个参数,可以有多个参数,当这种情况出现后,后面的第二个参数需要是多个序列。

map 函数解决的问题:

reduce 函数原型如下:

第一个参数是函数,第二个参数是序列,返回计算结果之后的值。该函数价值在于滚动计算应用于列表中的连续值。

测试代码如下:

最终的结果是 6,如果设置第三个参数为 4,可以运行代码查看结果,最后得到的结论是,第三个参数表示初始值,即累加操作初始的数值。

简单记忆:对序列内所有元素进行累计操作。

zip 函数原型如下:

zip 函数将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。

如果各个迭代器的元素个数不一样,则返回列表长度与最短的对象相同,利用星号( * )操作符,可以将元组解压为列表。

测试代码如下:

展示如何利用 * 操作符:

输出结果如下:

简单记忆:zip 的功能是映射多个容器的相似索引,可以方便用于来构造字典。

enumerate 函数原型如下:

参数说明:

该函数用于将一个可遍历的数据对象组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。

测试代码如下:

返回结果为: 。

本文涉及的函数可以与 lambda 表达式进行结合,能大幅度提高编码效率。最好的学习资料永远是官方手册

python中怎样用一个Scrollbar控制多个Listbox?即多个Listbox实现同步滚动。

将Scrollbar的事件处理定义到一个函数中,在函数中对各Listbox的相关属性进行相应设置

Python气象数据处理进阶之Xarray(6):数据重组与换形

这一部分涉及到了常用的操作,比如调换维度的位置,给数据重新reshape换形等等,建议大家可以认真阅读这部分。

老样子,先新建一个数组

比如说在求某个东西时需要将时间维放在最后一维,但是数据本身的时间在第一维,那么便可以用到这个操作。

第一种是精准换位,指定每个维度的位置

第二种是单独换位,只对指定维度换位,将time放在最后,其余不变

第三种为全部换位,相当于数组转置

扩展指增加一个维度,压缩指将一个维度挤压掉

官方文档中接下来有一段是关于DataArray向DataSet转换的,个人感觉放在这一章节并不合理,我后边会整理放进Python气象数据处理进阶之Xarray(1)中(我觉得两种基础数据结构以及互相转换应该最开始介绍的)。所以接下来跳过这部分。

个人感觉可能处理站点数据会用到这个方法

换一个数组演示

现在将这个2维数组堆叠成1维

也可以拆分,其实就是反堆叠

最重要的是不同于Pandas,Xarray的stack不缺自动丢失缺测值!!!

Xarray还提供了将不同变量stack的例子,有兴趣的可以去看看。这个用法感觉比较鸡肋

这块比较难理解,建议还是先读第一篇文章,弄清数据结构,da数组显示Dimensions without coordinates: x,而通过da.set_index函数,将X设置为混合索引号。

之后便可以实线自由索引:

通过mda.reset_index('x')重置。

reorder_levels()函数允许调换索引顺序(个人感觉比较鸡肋)

这小节应该是这篇文章和数组换形换维同等重要的。

这就是对数组进行滚动。这个的作用主要在于做差分计算。虽然前边讲过Xarray提供了中央差计算函数,但是仍需要更灵活的操作,滚动函数就实现了这个目的。


当前文章:滚动函数python 函数移动规律
浏览路径:http://scjbc.cn/article/hjjjig.html

其他资讯