python创建创建数组的问题

i = 0.8
while i <2:
temp= []
d = np.random.choice([3,i],size = 10, replace=True,p =[0.5,0.5])
temp.append(d)
i+= 0.1

我想要把每次循环创建的数组纵向合并,为什么这个temp只有一个数组出来, 求解答!

3个回答

因为这是在循环内部创建的变量,作用域仅限于本轮循环,把它放在 i=0.8 的前面,while 循环外面试试。

import numpy as np
i = 0.8
temp = []
while i < 2:
    d = np.random.choice([3,i], size = 10, replace=True,p =[0.5,0.5])
    temp.append(d)
    i += 0.1
print(temp)

结果:

[array([3. , 3. , 0.8, 0.8, 0.8, 3. , 0.8, 0.8, 3. , 0.8]), array([0.9, 0.9, 0.9, 0.9, 3. , 0.9, 3. , 0.9, 0.9, 3. ]), array([3., 3., 3., 3., 1., 3., 1., 3., 1., 3.]), array([1.1, 1.1, 1.1, 1.1, 3. , 1.1, 1.1, 1.1, 1.1, 1.1]), array([1.2, 1.2, 1.2, 1.2, 1.2, 3. , 1.2, 3. , 3. , 1.2]), array([1.3, 3. , 3. , 3. , 3. , 1.3, 3. , 3. , 3. , 1.3]), array([1.4, 1.4, 1.4, 3. , 3. , 1.4, 1.4, 3. , 1.4, 1.4]), array([1.5, 1.5, 3. , 1.5, 1.5, 3. , 1.5, 3. , 3. , 3. ]), array([1.6, 3. , 1.6, 1.6, 3. , 3. , 3. , 1.6, 1.6, 3. ]), array([1.7, 1.7, 1.7, 1.7, 3. , 3. , 3. , 3. , 1.7, 3. ]), array([1.8, 3. , 1.8, 1.8, 3. , 3. , 3. , 1.8, 1.8, 1.8]), array([1.9, 1.9, 3. , 3. , 1.9, 1.9, 1.9, 1.9, 1.9, 3. ])]

i = 0.8
d = np.random.choice([3,i],size = 10, replace=True,p =[0.5,0.5])
while i <2:
    temp=np.random.choice([3,i],size = 10, replace=True,p =[0.5,0.5])
    d=np.vstack((d,temp))
    i+= 0.1
print(d)

[[0.8 0.8 3.  3.  0.8 0.8 3.  0.8 0.8 0.8]
 [3.  3.  3.  0.8 3.  0.8 0.8 3.  0.8 3. ]
 [0.9 3.  0.9 3.  0.9 0.9 0.9 0.9 3.  0.9]
 [1.  3.  3.  3.  3.  1.  3.  1.  1.  1. ]
 [3.  3.  3.  3.  1.1 1.1 1.1 1.1 1.1 3. ]
 [1.2 1.2 3.  1.2 1.2 1.2 1.2 1.2 1.2 1.2]
 [1.3 1.3 3.  3.  3.  3.  3.  3.  1.3 1.3]
 [1.4 1.4 3.  3.  3.  3.  3.  3.  1.4 3. ]
 [1.5 3.  1.5 3.  3.  1.5 3.  1.5 1.5 1.5]
 [1.6 1.6 3.  3.  3.  3.  3.  1.6 3.  1.6]
 [3.  3.  1.7 3.  1.7 1.7 1.7 3.  1.7 3. ]
 [3.  3.  1.8 3.  1.8 3.  3.  3.  1.8 1.8]
 [1.9 3.  3.  1.9 3.  3.  3.  1.9 1.9 1.9]]
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
python for 循环数组 int to str
我创建了一个数组,每次for循环的时候会报这个错误 'list' object cannot be interpreted as an integer ``` def sort(Lst): newList = [] map(str,Lst) for x in range(Lst): for j,y in enumerate(newList): if x > y : newList.insert(j,x.__str__()) else: newList.append(x.__str__()) lst = [54,3,5,2,1] print(sort(lst)) ```
Python多线程通信问题
新人第一次提问, 最近在学习Python多线程, notify()与wait()语句。这是我写的一个作业, 要求是: 现在的你,是一个农场主。农场中养着10头小牛,牛吃草长大,但只有当下雨的时候草才会长大,每天有20%的概率下雨,草经过3次成长后就可以喂给牛吃了。每头小牛吃过5次草之后就会长大了。要求使用多线程来完成。小牛(消费者)线程和草(生产者)之间需要通信。 以下是我的代码: ``` import threading import random from time import sleep """ 声明全局变量: num_cows: 牛的数量, 整形,十头。 cows: 牛的集合, 列表(数组)。 长度:10 num_grass: 草的数量, 整形,若干。 区间:50-101棵。 为了确保每头牛都可以长大,小草必须至少有50棵。 grass: 草的集合, 列表(数组)。 长度:num_grass initial_stat: 草/牛的初始状态,整形,设置为0。 increment: 用于改变状态的变量,整形,设置为0。 """ # 定义全局变量 num_cows, initial_stat, num_grass = 10, \ 0, \ random.randint(50, 101) cows, grass = [], [] for i in range(num_grass): # 设置草儿数量,初始化每一棵小草状态 grass.append(initial_stat) for i in range(num_cows): # 初始化每一头牛 cows.append(initial_stat) # TODO 草儿生长类 class GrassGrow(threading.Thread): """草成长线程""" # TODO 重写run函数 def run(self): global grass global cows while True: ct.acquire() print("一天过去了...小草会不会生长呢?") grass = rain(grass) # 淋雨的草儿成长一次,数位进一, 呼叫rain函数, 传入参数grass列表 if len(grass) > 0: # 判断还有没有需要生长的草儿 if grassgrow(grass): # 检查草儿,若有一株淋到三次雨,通知牛儿吃草 print("提醒牛儿该吃草了") ct.notify() # 提醒牛儿线程该吃草了 ct.release() print("草线程解锁") sleep(1) print("通知牛儿吃草了") elif len(grass) <= 0: # 如果草儿被吃完了,结束进程 print("草儿被吃光啦") ct.release() # 解锁 break # 退出程序 # TODO 牛儿生长类 class CowGrow(threading.Thread): """牛儿成长线程""" print("start") # TODO 重写run函数 def run(self): print("1") global cows global grass # TODO 随机一头牛吃草 while True: print("2") ct.acquire() print("3") ct.wait() print("4") if grassgrow(grass) and 5 not in cows: print("牛有草能吃了") # 长大的小草中,随机吃掉一株,从草儿列表中移除 index = [] for i in range(len(grass)): if grass[i] >= 3: index.append(i) delete = index[random.randint(0, len(index) - 1)] del grass[delete] cows[random.randint(range(len(cows)))] += 1 # 随机一头牛吃草,状态进1 print("有一头牛把吃了一颗草,现在的牛儿们是:{}".format(cows)) # 判断牛儿中是否有长大的牛儿 elif 5 in cows: # 移除所有已经长大的牛儿 for cow in range(len(cows)): if cows[cow] == 5: del cows[cow] # 判断是不是所有的牛儿都长大了,如果都长大了,结束进程 elif len(cows) == 0: print("所有的牛儿都长大啦") ct.release() break ct.wait() ct.release() # sleep(1) # TODO 下雨函数 def rain(grass_list): """ :param grass_list: 接收 草儿列表作为参数 :return: 返回 新的,淋雨之后的草儿列表 """ # 遍历草列表中的每一株草 rain_probability = random.randint(1, 101) # 每天有20%几率局部下雨。如果未下雨,则所有小草都不会成长。如果下雨了,局部小草会成长。 if rain_probability <= 20: for a_grass in range(len(grass_list)): grass_grow_prob = random.randint(1, 101) if grass_grow_prob <= 50 and 0 <= grass_list[a_grass] <= 2: grass_list[a_grass] += 1 print("今天下雨啦,现在的小草们:{}".format(grass)) print("今天没有下雨,没有小草生长...") return grass_list # TODO 判断草长大函数 def grassgrow(grass_list): """ :param grass_list: 接收 草儿列表作为参数 :return: 返回 若有生长好的小草则返回真,否则为假 """ if 3 not in grass_list: print("目前为止还没有小草生长完成") return False else: print("有小草生长完成了,现在的小草们:{}".format(grass)) return True if __name__ == "__main__": ct = threading.Condition() # 定义线程变量, 用于多线程通信 cow_thread = CowGrow() grass_thread = GrassGrow() cow_thread.start() print("牛等待吃草") grass_thread.start() ``` rain函数用来20%几率下雨, grasgrow函数用来判断有没有草淋了三次雨, 一旦有草淋到三次雨就可以了通知CowGrow线程吃草了。 我的解题思路是: 创建一个列表grass代表草, 一个列表cows代表牛。类GrassGrow中当判断grassgrow函数为真时, 唤醒牛线程。然后随机一头牛吃了一颗草之后,阻塞自己等待。而当我实际运行的时候,牛在一开始被阻塞之后一直没有被唤醒 以下是运行结果: ============================================= start 1 2 3牛等待吃草 一天过去了...小草会不会生长呢? 今天没有下雨,没有小草生长... 目前为止还没有小草生长完成 一天过去了...小草会不会生长呢? 今天下雨啦,现在的小草们:[1, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1] 今天没有下雨,没有小草生长... 目前为止还没有小草生长完成 一天过去了...小草会不会生长呢? 今天没有下雨,没有小草生长... 目前为止还没有小草生长完成 一天过去了...小草会不会生长呢? 今天下雨啦,现在的小草们:[1, 1, 1, 0, 0, 2, 1, 1, 1, 2, 0, 0, 1, 1, 2, 1, 2, 2, 1, 0, 1, 1, 0, 1, 2, 1, 0, 2, 1, 1, 0, 1, 2, 1, 1, 0, 1, 0, 2, 1, 2, 2, 2, 0, 0, 2, 1, 2, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 2, 1, 1, 1, 2, 1, 2, 2, 1, 2, 1, 1, 2, 1, 0, 1, 1, 2, 2, 2, 0, 2, 1, 2, 1, 2, 1, 0, 1, 0, 2, 1, 1, 1, 2, 1, 1, 1] 今天没有下雨,没有小草生长... 目前为止还没有小草生长完成 一天过去了...小草会不会生长呢? 今天下雨啦,现在的小草们:[2, 2, 1, 1, 1, 2, 2, 1, 2, 2, 1, 0, 1, 1, 2, 2, 2, 3, 2, 1, 1, 1, 0, 1, 2, 2, 1, 2, 2, 2, 0, 1, 3, 1, 2, 0, 1, 0, 3, 2, 3, 3, 3, 0, 1, 2, 1, 2, 0, 1, 1, 2, 2, 1, 0, 1, 1, 1, 1, 3, 1, 1, 1, 3, 2, 2, 3, 1, 2, 2, 1, 3, 2, 1, 1, 2, 3, 2, 2, 1, 2, 1, 3, 1, 2, 2, 1, 1, 0, 3, 2, 2, 1, 3, 2, 2, 1] 今天没有下雨,没有小草生长... 有小草生长完成了,现在的小草们:[2, 2, 1, 1, 1, 2, 2, 1, 2, 2, 1, 0, 1, 1, 2, 2, 2, 3, 2, 1, 1, 1, 0, 1, 2, 2, 1, 2, 2, 2, 0, 1, 3, 1, 2, 0, 1, 0, 3, 2, 3, 3, 3, 0, 1, 2, 1, 2, 0, 1, 1, 2, 2, 1, 0, 1, 1, 1, 1, 3, 1, 1, 1, 3, 2, 2, 3, 1, 2, 2, 1, 3, 2, 1, 1, 2, 3, 2, 2, 1, 2, 1, 3, 1, 2, 2, 1, 1, 0, 3, 2, 2, 1, 3, 2, 2, 1] 提醒牛儿该吃草了 草线程解锁 通知牛儿吃草了 一天过去了...小草会不会生长呢? ============================================== 可以看到牛只有一开始调用了一次...之后再也没有被唤醒, 而且前几次小草没有sleep就运行了好多次,之后才开始运行sleep,打印"提醒牛儿该吃草了", "草线程解锁", "通知牛儿吃草了"才开始运行。谷歌和本站都查了一些问题,但和我的情况都不太相似。真心像各位请教...拜托了..
Python爬虫在Django中的使用问题
新入门Django,现在已经写好了一个Python爬虫,直接用Python跑测试没问题, ------在Django项目中加入了一个新的爬虫app,用model创建了表格,和展示爬虫的html ------但是runserver, 以后查看db.sqlite3里面对应的表已经创建,但是里面没有存爬到的内容, ------ 请大神们指教该怎么办, 代码如下 Spider.py, 爬虫并存入model.py 创建的**Website**表 ``` #!/usr/bin/python # -*- coding: utf-8 -*- # import data into mysql(sqlite3), must have these four lines defination: import os # # 我所创建的project名称为learn_spider;里面的app名称为website os.environ.setdefault("DJANGO_SETTINGS_MODULE", "blogproject.settings") # import django # django.setup() # urllib2 package: open resource by URL; re package: use regular expression to filter the objects import urllib.request, re import urllib.parse # BeautifulSoup: abstract data clearly from html/xml files from bs4 import BeautifulSoup # import tables from models.py from .models import Website # urlopen()方法需要加read()才可视源代码,其中decode("utf-8")表示以utf-8编码解析原网页,这个编码格式是根据网页源代码中<head>标签下的<meta charset="utf-8">来决定的。 ul = "https://baike.baidu.com/item/Python" req = urllib.request.Request(ul) html_python = urllib.request.urlopen(req).read().decode("utf-8") #html_python = urllib.request.urlopen('https://baike.baidu.com/item/Python').read().decode("utf-8") soup_python = BeautifulSoup(html_python, "html.parser") # print soup #这里用到了正则表达式进行筛选 item_list = soup_python.find_all('a', href=re.compile("item")) for each in item_list: print (each.string) # use quote to replace special characters in string(escape encode method) urls = "https://baike.baidu.com/item/" + urllib.parse.quote(each.string.encode("utf-8")) print (urls) html = urllib.request.urlopen(urls).read().decode("utf-8") soup = BeautifulSoup(html, "html.parser") if soup.find('div', 'lemma-summary') == None: text = "None" else: text = soup.find('div', 'lemma-summary').get_text() print (text) Website.objects.get_or_create(name=each.string, url=urls, text=text) text_python = soup_python.find('div', 'lemma-summary').text Website.objects.get_or_create(name="Python", url="https://baike.baidu.com/item/Python", text=text_python) ``` model.py 创建Website 表用于存储爬到的内容 ``` # -*- coding: utf-8 -*- from __future__ import unicode_literals from django.db import models # Create your models here. class Website(models.Model): name = models.CharField(max_length=100) url = models.CharField(max_length=100) text = models.TextField() def __unicode__(self): return self.name ``` view.py 提取表中已爬取的内容 ``` from __future__ import unicode_literals from django.shortcuts import render # Create your views here. from .models import Website def show(request): # 这里直接通过QuerySet API获取所有的object,默认返回类型为tuple(元组) queryset = Website.objects.all() # 传入三个渲染参数 return render(request, 'news/nws.html', {'QuerySet': queryset}) ```
“00时00分34秒”形式,要将其转换为整数值(秒数),并和“观看总页数”和在一起创建二维数组,并统计最长观看时间和平均观看时间值
第5列学生的预习时间是字符串“00时00分34秒”形式,要将其转换为整数值(秒数),并和“观看总页数”和在一起创建二维数组,并统计最长观看时间和平均观看时间值
python 数组通过传参修改为什么必须用num[:]
如下代码中 ``` class Solution(object): def rotate(self, nums, k): k %= len(nums) nums = nums[-k:] + nums[:-k] ``` nums会创建一个和参数同名的局部变量,而只有使用nums[:]才可以改变nums,请问为什么呢 我又尝试了如下代码 ``` a = [1, 2, 3] print(id(a)) print(id(a[:])) a = [4, 5, 6] print(id(a)) print(id(a[:])) print(a) ``` 输出为 ``` 2284479734280 2284479734344 2284479734344 2284479734280 [4, 5, 6] ``` 想请教一下nums和nums[:]的区别,感谢!
python 新手python小问题
第73行的print(classcount) 为什么运行以后 命令行无显示![图片说明](https://img-ask.csdn.net/upload/201804/17/1523976324_975204.png) ``` from math import log import operator def calcShannonEnt(dataSet): numEntires = len(dataSet) #返回数据集的行数 labelCounts = {} #保存每个标签(Label)出现次数的字典 for featVec in dataSet: #对每组特征向量进行统计 currentLabel = featVec[-1] #提取标签(Label)信息 if currentLabel not in labelCounts.keys(): #如果标签(Label)没有放入统计次数的字典,添加进去 labelCounts[currentLabel] = 0 labelCounts[currentLabel] += 1 #Label计数 shannonEnt = 0.0 #经验熵(香农熵) for key in labelCounts: #计算香农熵 prob = float(labelCounts[key]) / numEntires #选择该标签(Label)的概率 shannonEnt -= prob * log(prob, 2) #利用公式计算 return shannonEnt #返回经验熵(香农熵) def createDataSet(): dataSet = [[0, 0, 0, 0, 'no'], #数据集 [0, 0, 0, 1, 'no'], [0, 1, 0, 1, 'yes'], [0, 1, 1, 0, 'yes'], [0, 0, 0, 0, 'no'], [1, 0, 0, 0, 'no'], [1, 0, 0, 1, 'no'], [1, 1, 1, 1, 'yes'], [1, 0, 1, 2, 'yes'], [1, 0, 1, 2, 'yes'], [2, 0, 1, 2, 'yes'], [2, 0, 1, 1, 'yes'], [2, 1, 0, 1, 'yes'], [2, 1, 0, 2, 'yes'], [2, 0, 0, 0, 'no']] labels = ['年龄', '有工作', '有自己的房子', '信贷情况'] #特征标签 return dataSet, labels #返回数据集和分类属性 def splitDataSet(dataSet, axis, value): retDataSet = [] #创建返回的数据集列表 for featVec in dataSet: #遍历数据集 if featVec[axis] == value: reducedFeatVec = featVec[:axis] #去掉axis特征 reducedFeatVec.extend(featVec[axis+1:]) #将符合条件的添加到返回的数据集 retDataSet.append(reducedFeatVec) return retDataSet #返回划分后的数据集 def chooseBestFeatureToSplit(dataSet): numFeatures = len(dataSet[0]) - 1 #特征数量 baseEntropy = calcShannonEnt(dataSet) #计算数据集的香农熵 bestInfoGain = 0.0 #信息增益 bestFeature = -1 #最优特征的索引值 for i in range(numFeatures): #遍历所有特征 #获取dataSet的第i个所有特征 featList = [example[i] for example in dataSet] uniqueVals = set(featList) #创建set集合{},元素不可重复 newEntropy = 0.0 #经验条件熵 for value in uniqueVals: #计算信息增益 subDataSet = splitDataSet(dataSet, i, value) #subDataSet划分后的子集 prob = len(subDataSet) / float(len(dataSet)) #计算子集的概率 newEntropy += prob * calcShannonEnt(subDataSet) #根据公式计算经验条件熵 infoGain = baseEntropy - newEntropy #信息增益 if (infoGain > bestInfoGain): #计算信息增益 bestInfoGain = infoGain #更新信息增益,找到最大的信息增益 bestFeature = i #记录信息增益最大的特征的索引值 return bestFeature #返回信息增益最大的特征的索引值 def majorityCnt(classList): classCount = {} for vote in classList: #统计classList中每个元素出现的次数 if vote not in classCount.keys(): classCount[vote] = 0 classCount[vote] += 1 print(clsssCount) sortedClassCount = sorted(classCount.items(), key = operator.itemgetter(1), reverse = True) #根据字典的值降序排序 return sortedClassCount[0][0] #返回classList中出现次数最多的元素 def createTree(dataSet, labels, featLabels): classList = [example[-1] for example in dataSet] if classList.count(classList[0]) == len(classList): #如果类别完全相同则停止继续划分 return classList[0] if len(dataSet[0]) == 1: #遍历完所有特征时返回出现次数最多的类标签 return majorityCnt(classList) bestFeat = chooseBestFeatureToSplit(dataSet) #选择最优特征 bestFeatLabel = labels[bestFeat] #最优特征的标签 featLabels.append(bestFeatLabel) myTree = {bestFeatLabel:{}} #根据最优特征的标签生成树 del(labels[bestFeat]) featValues = [example[bestFeat] for example in dataSet] #得到训练集中所有最优特征的属性值 uniqueVals = set(featValues) #去掉重复的属性值 for value in uniqueVals: #遍历特征,创建决策树。 myTree[bestFeatLabel][value] = createTree(splitDataSet(dataSet, bestFeat, value), labels, featLabels) return myTree if __name__ == '__main__': dataSet, labels = createDataSet() featLabels = [] myTree = createTree(dataSet, labels, featLabels) ```
一道python实现简单编译器的问题
请基于四则运算简单语法,增加带符号(正号或负号)数的语法,并修改所给的程序,实现对带符号数四则运算的求值。 为支持带符号数的编译,在教材案例基础上,添加了: *signop = oneOf('+ -'),用于标示正副符号。 增加了符号的运算优先级的设定:表示signop的优先级最高,单操作数运算符,且是右结合的,识别出符号数后,由EvalSignOp类进行处理。 arith_expr = operatorPrecedence(operand, [(signop, 1, opAssoc.RIGHT, EvalSignOp), (multop, 2, opAssoc.LEFT, EvalMultOp), (plusop, 2, opAssoc.LEFT, EvalAddOp), ]) EvalSignOp类:处理符号数的类,以识别出来的符号tokens列表的第0项为处理对象,该项包含了符号及数值。因此,类初始化函数中要从tokens[0]中提取出sign和value。在eval方法中,根据sign和value得到实际的值。 请在指定位置编写程序,完成EvalSignOp类的定义。 相关知识 程序设计语言的语法定义了一个程序的组成结构或组织形式,即构成语言的各个部分之间的组合规则,但不涉及这些部分的特定含义,也不涉及使用者。如在英语中“Cat dog boy”是不满足语法的句子,因为英语语法中未定义形为“<Noun><noun><noun>”的句子。又例如,Python表达式“3.2+3.2”是语法正确的,但是“3.2 3.2”不是语法正确的。 语义表示满足语法的程序的含义,即各个语法单元的特定含义。如“I was born on the 30th February”,语法上是正确的,但是语义上是错误的,因为2月没有30号。又例如,Python表达式“3.2/'abc'”语法上是正确的,但是语义上是错误的,因为Python的语义定义不允许用一个数去除以一个字符串。程序设计语言的语义包括静态语义和动态语义。静态语义指的是在编写程序时就可以确定的含义,而动态语义则必须在程序运行时才可以确定的含义。语义不清,计算机就无法知道所要解决问题的步骤,也就无法执行程序。 用自然语言描述程序设计语言的语法,存在不同程度的二义性。这种模糊、不确定的方式无法精确定义一门程序设计语言。最著名的文法描述形式是由Backus定义Algol60语言时提出的Backus-Naur范式(Backus-Naur Form, BNF)及其扩展形式EBNF。 下面以各程序设计语言都常见的实数四则运算语法表示为例,简单介绍EBNF范式。 digit = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" ; nonzero = "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" ; integer = nonzero, { digit } ; real = integer, ".", integer operand = integer | real operator = "+" | "-" | "*" | "/"; expression = operand | "(", expression, operator, expression, ")"; 上述EBNF定义中,“=”的含义是定义,如digit定义为0~9的数字,“|”表示或,即digit可以是0~9的任一数字,“,”表示字符拼接,“;”是结束符,“{}”表示重复出现,可以是0次,也可以是多次。因此,上述EBNF定义了实数和整数的四则算术运算,整数是由0~9的数字构成的字符串,允许有前0;实数是由两个整数中间夹一个“.”构成。四则运算的表达式可以是一个数,即operand,也可以由括号括起的由运算符拼接两个表达式而成。 基于该EBNF定义,利用Python的pyparsing库,可以为其定义的四则运算表达式实现一个编译器,识别表达式,并求表达式的值。main函数是进行EBNF解析的主要函数,可以看到,与EBNF定义相对应,利用pyparsing提供的机制,对EBNF定义进行了表述转换,例如,integer是0~9数字构成的无前0的字符串,在main 函数中integer定义为"0"|Word(nums[1:],nums),即无前0的数字串。实数定义成由整数数字串、小数点和数字串构成的数字串。 def main(strExpr): integer = "0"|Word(nums[1:],nums) real = Combine(integer + "." + Word(nums)) variable = Word(alphas) operand = real | integer | variable multop = oneOf('* / // %') plusop = oneOf('+ -') operand.setParseAction(EvalConstant) arith_expr = operatorPrecedence(operand, [(multop, 2, opAssoc.LEFT, EvalMultOp), (plusop, 2, opAssoc.LEFT, EvalAddOp), ]) ret = arith_expr.parseString(strExpr, parseAll=True)[0] result = ret.eval() return result 上述定义的main函数中EvalConstant等以Eval开头的是一系列类,用于在识别出相应的语法结构时采取相应的动作。例如EvalConstant用于在识别出一个整数或实数时,创建一个EvalConstant对象。Eval系列类定义如下所示。 class EvalConstant(): def __init__(self, tokens): self.value = tokens[0] def eval(self): try: return int(self.value) except: return float(self.value) def operatorOperands(tokenlist): it = iter(tokenlist) while 1: try: o1 = next(it) o2 = next(it) yield (o1, o2) except StopIteration: break class EvalMultOp(): def __init__(self, tokens): self.value = tokens[0] def eval(self): prod = self.value[0].eval() for op, val in operatorOperands(self.value[1:]): if op == '*': prod *= val.eval() if op == '/': prod /= val.eval() return prod class EvalAddOp(): def __init__(self, tokens): self.value = tokens[0] def eval(self): sum = self.value[0].eval() for op, val in operatorOperands(self.value[1:]): if op == '+': sum += val.eval() if op == '-': sum -= val.eval() return sum 由上述代码可知每个类有一个eval方法,用来对识别出来的语法元素进行语义解释,例如,EvalConstant的eval方法将识别出来的整数或实数数字串分别转换为整数或实数。EvalAddOp的eval方法对识别出来的加(减)法字符串中的运算数,根据运算符(加或减)的不同,做相应的运算。EvalMultOp的eval方法功能是类似的。 以各种四则运算表达式字符串为参数运行main函数,即可得到该表达式的值。例如main(‘1+2+3+4’)结果是10。 编程要求 本关的编程任务是补全11-2.py文件中EvalSignOp类的__init__函数和eval函数,以实现简单编译器的要求。具体要求如下: 本关要求通过补全11-2.py文件中EvalSignOp类的__init__函数和eval函数来实现对带符号数四则运算的求值。 具体请参见后续测试样例。 本关涉及的代码文件11-2.py的代码框架如下: from pyparsing import Word, nums, alphas, Combine, oneOf, opAssoc, operatorPrecedence class EvalConstant(): def __init__(self, tokens): self.value = tokens[0] def eval(self): try: return int(self.value) except: return float(self.value) class EvalSignOp(object): def __init__(self, tokens): # 请在此添加代码,补全函数__init__ #-----------Begin---------- #------------End----------- def eval(self): # 请在此添加代码,补全函数eval #-----------Begin---------- #------------End----------- def operatorOperands(tokenlist): it = iter(tokenlist) while 1: try: o1 = next(it) o2 = next(it) yield (o1, o2) except StopIteration: break class EvalMultOp(): def __init__(self, tokens): self.value = tokens[0] def eval(self): prod = self.value[0].eval() for op, val in operatorOperands(self.value[1:]): if op == '*': prod *= val.eval() if op == '/': prod /= val.eval() return prod class EvalAddOp(): def __init__(self, tokens): self.value = tokens[0] def eval(self): sum = self.value[0].eval() for op, val in operatorOperands(self.value[1:]): if op == '+': sum += val.eval() if op == '-': sum -= val.eval() return sum def main(strExpr): integer = "0"|Word(nums[1:],nums) real = Combine(integer + "." + Word(nums)) variable = Word(alphas) operand = real | integer | variable multop = oneOf('* / // %') plusop = oneOf('+ -') signop = oneOf('+ -') operand.setParseAction(EvalConstant) arith_expr = operatorPrecedence(operand, [(signop, 1, opAssoc.RIGHT, EvalSignOp), (multop, 2, opAssoc.LEFT, EvalMultOp), (plusop, 2, opAssoc.LEFT, EvalAddOp), ]) ret = arith_expr.parseString(strExpr, parseAll=True)[0] result = ret.eval() return result if __name__ == '__main__': exprs = ['-12*(3*(-3))-100+(-55)', '90/(-12-(-13))', '1+2+3+4+(-10)-(-11)'] for expr in exprs: print(main(expr))
windows上用python学习multiprocessing模块的进程池,程序创建了进程池,但是却没用进入子进程?
1.问题描述: 看网课学习python,昨天学到进程池和进程之间的通信。 看老师的视频时运行正确,自己确实没出想象中的效果。 在windows上用python学习multiprocessing模块的进程池,在pycharm中程序创建了进程池,但是却没用进入子进程?但是在命令窗口去可以进入子进程。 代码: ``` # 测试进程池的使用 from multiprocessing import Pool import time, os def work(num): print('咋了?', end='\t') print(5*num) time.sleep(1) if __name__ == "__main__": print('Parent process %s.' % os.getpid()) # 定义一个进程池,设置最大进程为4,默认为cpu核心数 po = Pool(4) for i in range(10): # 调用apply_saync()方法,apply_saync选择要调用的目标,以及将目标需要的参数 # 以元组形式传递,每次循环都会用空出来的进程去调用目标。 po.apply_async(func=work, args=(i,)) # 关闭进程池,只准许进程从进程池出来,不准进入进程池 po.close() # 主进程等待子进程结束,必须写再close后。 po.join() print('子进程结束') ``` 然后在pycharm的运行结果是既没有报错也没有执行子进程的指令 图是这样的: ![图片说明](https://img-ask.csdn.net/upload/201901/16/1547605427_367407.png) 为了给各位大佬提供更多信息,我在循环那debug了下,尽管我目前还看不懂。 ![图片说明](https://img-ask.csdn.net/upload/201901/16/1547605634_254497.png) 在Windows的命令窗口下直接运行结果就有了。貌似得到我的结果了。 ![图片说明](https://img-ask.csdn.net/upload/201901/16/1547605512_956498.png) 说明:昨天也查了半天资料,说的都是加if __name__ == "__main__": 来保证正常,可是我还是出问题了! 请各位大佬指点迷津,拯救一个初学者吧。
【python3.8字典问题请教】对Excel中数据提取,相同项对应值相加,写入新sheet表
![图片说明](https://img-ask.csdn.net/upload/201912/17/1576559364_374608.png) 我想提取Sheet表中的N、O和R列,对R列中相同姓名的人对应的N、O列的值分别相加,形成图2这样 ![图片说明](https://img-ask.csdn.net/upload/201912/17/1576559417_243731.png) ``` print('Opening workbook...') wb = openpyxl.load_workbook('C:/Users/mawenxin/Desktop/dome1/asd.xlsx') #打开Excel表格 sheet = wb.get_sheet_by_name('Sheet1') #获取工作表 nameData = { } #创建字典 print('Reading rows...') for row in range(2,sheet.max_row+1): #从第二行循环到最后一行 JE = sheet['N'+str(row)].value name = sheet['E'+ str(row)].value SY = sheet['O'+str(row)].value #存储每一列的数据 #字典结构nameData['姓名'][金额][使用金额] nameData={name,(JE,SY)} ``` 我按照网上以及书上的内容只能写这点,也不知道对不对 【问题】 **字典内能不能一个键对应两个值,或者对应一个元组或列表?** **用什么函数进行提取合并姓名?** **如果自定义函数要怎么写?** **能不能帮我写一下,琢磨很久了也不知道咋写**
python调用摄像头动态更新三维灰度分布图
我想python调用摄像头动态更新三维灰度分布图,但发现在绘制的时候,前面绘制的图像不会被擦掉,而是重叠在一起,这要怎么改呢? ``` from DataDisplayUI import Ui_MainWindow from PyQt5.QtWidgets import QApplication,QMainWindow,QGridLayout from PyQt5.QtCore import QTimer import sys,time import cv2 import numpy as np import cv2 as cv from mpl_toolkits.mplot3d import Axes3D from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas from matplotlib.figure import Figure from matplotlib.lines import Line2D import matplotlib import matplotlib.cbook as cbook class Figure_Canvas(FigureCanvas): def __init__(self,parent=None,width=3.9,height=2.7,dpi=100): self.fig=Figure(figsize=(width,height),dpi=50) #创建画布 super(Figure_Canvas,self).__init__(self.fig) # self.ax=self.fig.add_subplot() #创建子图 class ImgDisp(QMainWindow,Ui_MainWindow): def __init__(self,parent=None): super(ImgDisp,self).__init__(parent) self.setupUi(self) self.Init_Widgets() self.video_start() self.timer=QTimer() #QTimer定时器 self.timer.start(1000) #timer方法,开始执行,1代表循环周期 self.timer.timeout.connect(self.SurfUpdate) #连接到槽UpdateImgs,循环函数体 def Init_Widgets(self): self.PrepareSamples() self.PrepareSurfaceCanvas() def PrepareSamples(self): self.x = np.arange(-4, 4, 0.02) self.y = np.arange(-4, 4, 0.02) self.X, self.Y = np.meshgrid(self.x, self.y) self.z = np.sin(self.x) self.R = np.sqrt(self.X ** 2 + self.Y ** 2) self.Z = np.sin(self.R) def PrepareSurfaceCanvas(self): self.SurfFigure = Figure_Canvas() self.SurfFigureLayout = QGridLayout(self.SurfaceDisplayGB) self.SurfFigureLayout.addWidget(self.SurfFigure) self.SurfFigure.ax.remove() self.ax3d = self.SurfFigure.fig.gca(projection='3d') def video_start(self): self.cap = cv2.VideoCapture(0) # 打开摄像头,0代表的是设备id,如果有多个摄像头,可以设置其他数值 self.cap.set(cv2.CAP_PROP_FRAME_WIDTH, 1280) # 调节视频分辨率 self.cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 480) self.cap.set(cv2.CAP_PROP_SATURATION, 10) # 调节曝光 def SurfUpdate(self): ret, frame = self.cap.read() # 读取摄像头,它能返回两个参数,第一个参数是bool型的ret,其值为True或False,代表有没有读到图片;第二个参数是frame,是当前截取一帧的图片 img = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) # 转灰度图 img= cv2.GaussianBlur(img, (5, 5), 0) #高斯滤波 img_date = np.array(img) # 每一帧存入循环数组 # 准备数据 sp = img_date.shape h = int(sp[0]) w = int(sp[1]) X = np.arange(0, w, 1) Y = np.arange(0, h, 1) X, Y = np.meshgrid(X, Y) Z = img_date self.Surf = self.ax3d.plot_surface(X, Y, Z, cmap='rainbow') self.SurfFigure.draw() if __name__=='__main__': app=QApplication(sys.argv) #创建一个应用程序对象 ui=ImgDisp() ui.show() sys.exit(app.exec_()) #退出 ```
第5列学生的预习时间是字符串“00时00分34秒”形式,要将其转换为整数值(秒数),并和“观看总页数”和在一起创建二维数组,并统计最长观看时间和平均观看时间值
第3章 基本数据类型-课件推送-2018-10-06 07:59:02,,,,, ,,观看信息,,, 学号,姓名,观看总页数(共8页),看了哪些页,总时长,完成时间 11180522030,张1,0,未预习,0时00分00秒,未预习 15050011014,张2,2,"[2, 6]",0时00分34秒,未完成预习 15050011025,张3,0,未预习,0时00分00秒,未预习 15050011028,张4,8,"[1, 2, 3, 4, 5, 6, 7, 8]",0时26分15秒,2018/10/7 20:20 15050011081,张5,8,"[1, 2, 3, 4, 5, 6, 7, 8]",0时02分37秒,2018/10/7 18:23 15050031035,张6,0,未预习,- -,未预习 16050011005,张7,8,"[1, 2, 3, 4, 5, 6, 7, 8]",0时05分46秒,2018/10/7 15:09 16050011011,张8,0,未预习,- -,未预习 16050011016,张9,0,未预习,- -,未预习 16050011019,张10,8,"[1, 2, 3, 4, 5, 6, 7, 8]",0时03分48秒,2018/10/7 10:06 16050011020,张11,8,"[1, 2, 3, 4, 5, 6, 7, 8]",0时26分55秒,2018/10/6 16:14 16050011022,张12,8,"[1, 2, 3, 4, 5, 6, 7, 8]",0时06分58秒,2018/10/7 12:35 16050011031,张13,0,未预习,- -,未预习 16050011049,张14,0,未预习,- -,未预习 16050011050,张15,8,"[1, 2, 3, 4, 5, 6, 7, 8]",0时04分52秒,2018/10/6 10:05 16050011052,张16,0,未预习,- -,未预习
openstack 用deshboard创建实例失败
环境是ubuntu12.04 server 3个节点,compute node,controller node,block storage node,网络服务用到是nova-network 每台服务器一个网卡,eth0 192.168.1.xxx, 然后又虚拟了一个ip eth0:0 10.0.0.xxx 接下来完全安装openstack官网的安装部署步骤来的,在安装完以后用deshboard登录,创建实例的时候出现错误,错误信息如下: 云主机概况 信息 名称 a ID 0eb442be-8ad3-4184-b8c4-a8d1027b4ccb 状态 Error 可用域 nova 已创建 七月 3, 2014, 6:19 a.m. 正常运行时间 16 分钟 故障 消息 Remote error: ProcessExecutionError Unexpected error while running command. Command: sudo nova-rootwrap /etc/nova/rootwrap.conf env CONFIG_FILE=["/etc/nova/nova.conf"] NETWORK_ID=1 dnsmasq --strict-order --bind-interfaces --conf-file= --pid-file=/var/lib/ 编码 500 详情 File "/usr/lib/python2.7/dist-packages/nova/compute/manager.py", line 296, in decorated_function return function(self, context, *args, **kwargs) File "/usr/lib/python2.7/dist-packages/nova/compute/manager.py", line 2075, in run_instance do_run_instance() File "/usr/lib/python2.7/dist-packages/nova/openstack/common/lockutils.py", line 249, in inner return f(*args, **kwargs) File "/usr/lib/python2.7/dist-packages/nova/compute/manager.py", line 2074, in do_run_instance legacy_bdm_in_spec) File "/usr/lib/python2.7/dist-packages/nova/compute/manager.py", line 1207, in _run_instance notify("error", fault=e) # notify that build failed File "/usr/lib/python2.7/dist-packages/nova/openstack/common/excutils.py", line 68, in __exit__ six.reraise(self.type_, self.value, self.tb) File "/usr/lib/python2.7/dist-packages/nova/compute/manager.py", line 1191, in _run_instance instance, image_meta, legacy_bdm_in_spec) File "/usr/lib/python2.7/dist-packages/nova/compute/manager.py", line 1355, in _build_instance filter_properties, bdms, legacy_bdm_in_spec) File "/usr/lib/python2.7/dist-packages/nova/compute/manager.py", line 1401, in _reschedule_or_error self._log_original_error(exc_info, instance_uuid) File "/usr/lib/python2.7/dist-packages/nova/openstack/common/excutils.py", line 68, in __exit__ six.reraise(self.type_, self.value, self.tb) File "/usr/lib/python2.7/dist-packages/nova/compute/manager.py", line 1396, in _reschedule_or_error bdms, requested_networks) File "/usr/lib/python2.7/dist-packages/nova/compute/manager.py", line 2127, in _shutdown_instance self._try_deallocate_network(context, instance, requested_networks) File "/usr/lib/python2.7/dist-packages/nova/compute/manager.py", line 2086, in _try_deallocate_network self._set_instance_error_state(context, instance['uuid']) File "/usr/lib/python2.7/dist-packages/nova/openstack/common/excutils.py", line 68, in __exit__ six.reraise(self.type_, self.value, self.tb) File "/usr/lib/python2.7/dist-packages/nova/compute/manager.py", line 2081, in _try_deallocate_network self._deallocate_network(context, instance, requested_networks) File "/usr/lib/python2.7/dist-packages/nova/compute/manager.py", line 1775, in _deallocate_network context, instance, requested_networks=requested_networks) File "/usr/lib/python2.7/dist-packages/nova/network/api.py", line 94, in wrapped return func(self, context, *args, **kwargs) File "/usr/lib/python2.7/dist-packages/nova/network/api.py", line 318, in deallocate_for_instance requested_networks=requested_networks) File "/usr/lib/python2.7/dist-packages/nova/network/rpcapi.py", line 190, in deallocate_for_instance return cctxt.call(ctxt, 'deallocate_for_instance', **kwargs) File "/usr/lib/python2.7/dist-packages/oslo/messaging/rpc/client.py", line 150, in call wait_for_reply=True, timeout=timeout) File "/usr/lib/python2.7/dist-packages/oslo/messaging/transport.py", line 90, in _send timeout=timeout) File "/usr/lib/python2.7/dist-packages/oslo/messaging/_drivers/amqpdriver.py", line 412, in send return self._send(target, ctxt, message, wait_for_reply, timeout) File "/usr/lib/python2.7/dist-packages/oslo/messaging/_drivers/amqpdriver.py", line 405, in _send raise result 已创建 七月 3, 2014, 6:19 a.m. 规格 云主机类型 m1.tiny 内存 512MB 虚拟内核 1 虚拟内核 磁盘 1GB IP地址 Demo-Net 安全组 default 未定义规则。 元数据 键名称 demo-key 镜像名称 (not found) 云硬盘已连接 连接到 myVolume on vda 我个人感觉可能是network出现了问题,希望遇到过这个问题,或者能提供一些排错方法的朋友致电
新人使用pycharm运行飞机大战项目报如下错误:AttributeError: module 'pygame.image' has no attribute 'get_rect'
看着网上的教学视频一步一步下来,当建立敌机的精灵后,在程序中调用这个精灵时就会报错,单独运行精灵程序时不会报错,在网上也找了相关的资料,但类似的好像也不对; 主程序代码如下: ``` import pygame from plane_sprites import * pygame.init() #创建游戏窗口 480*700 screen = pygame.display.set_mode((480,700)) #绘制背景图像 bg = pygame.image.load("./images/background.png") screen.blit(bg,(0,0)) #绘制英雄的飞机 hero = pygame.image.load("./images/me1.png") screen.blit(hero,(150,400)) #可以在所有绘制工作结束后,统一调度update方法啊 pygame.display.update() #创建时钟对象 clock = pygame.time.Clock() #1.定义rect记录飞机的初始位置 hero_rect = pygame.Rect(150,400,102,126) #创建敌机的精灵 enemy = GameSprite("./images/enemy1.png") enemy1 = GameSprite("./images/enemy1.png",2) #创建敌机的精灵组 enemy_group = pygame.sprite.Group(enemy,enemy1) #游戏循环>意味着游戏正式开始 while True: #1.可以指定循环体内部的代码执行的频率 clock.tick(60) """ #捕获事件 event_list = pygame.event.get() if len(event_list) > 0: print(event_list) """ #事件监听 for event in pygame.event.get(): #判断用户是否点击了关闭按钮 if event.type == pygame.QUIT: print('退出游戏!') pygame.quit() #直接退出系统 exit() #2.修改飞机的位置 hero_rect.y -= 1 #判读飞机的位置 if hero_rect.y <= -126: hero_rect.y = 700 #3.调用blit方法绘制图像 screen.blit(bg,(0,0)) screen.blit(hero,hero_rect) #让精灵族调用两个方法 #update - 让组中的所有精灵都更新位置 enemy_group.update() #draw - 在screen上显示所有的精灵 enemy_group.draw(screen) #4.使用update方法更新显示 pygame.display.update() pygame.quit() ``` 调用的精灵程序如下: ``` import pygame class GameSprite(pygame.sprite.Sprite): """飞机大战精灵""" def __init__(self, image_name, speed=1): #调用父类的初始化方法 super().__init__() #定义对象的属性 self.image = pygame.image.load(image_name) self.rect = pygame.image.get_rect() self.speed = speed def update(self): #在屏幕的垂直方向移动 self.rect.y += self.speed ``` 运行后报如下的错误: AttributeError: module 'pygame.image' has no attribute 'get_rect' ![图片说明](https://img-ask.csdn.net/upload/202002/08/1581141436_82065.png) 还请各位大佬有时间能帮忙看下这个问题我出错在哪里了,谢谢哈
深度学习用python构建感知器代码问题
![图片说明](https://img-ask.csdn.net/upload/201707/26/1501060730_720662.png) 结果应该是图中的,可是我的结果都是0,不知道哪里错了,求各位大神帮忙啊 from functools import reduce def f(t): return t[0] * t[1] class Perceptron(object): def __init__(self,input_num,activator): ''' 初始化感知器,设置输入参数的个数,以及激活函数,激活函数的类型为double->double''' self.activator = activator self.weights = [0.0 for _ in range(input_num)] # 权重向量初始化为0 self.bias = 0.0 # 偏置项初始化为0 def __str__(self): ''' 打印学习道德权重、偏置项 ''' print('weithts\t:',list(self.weights)) return 'bias\t:%f\n' % (self.bias) def perdict(self,input_vec): ''' 输入向量,输出感知器的计算结果 ''' # 把input_vec[x1,x2,x3...]和weights[w1,w2,w3...]打包在一起 # 变成[(x1,w1),(x2,w2),...] # 然后利用map函数计算[1*w1,x2*w2,x3*w3] # 最后利用reduce求和 L = map(f, zip(input_vec, self.weights)) return self.activator(reduce(lambda a,b:a+b,L,0.0)+self.bias) def train(self,input_vecs,labels,iteration,rate): ''' 输入训练数据:一组向量、与每个向量对应的label;以及训练轮数、学习率 ''' for i in range(iteration): self._one_iteration(input_vecs,labels,rate) def _one_iteration(self,input_vecs,labels,rate): ''' 一次迭代,把所有的训练数据过一遍 ''' #把输入和输出打包在一起,成为样本的列表[(input_vec,label),...] #而每个训练样本是(input_vec,label) samples = zip(input_vecs,labels) #对每个样本,按照感知器规则更新权重 for (input_vec,label) in samples: #计算感知器在当前权重下的输出 output = self.perdict(input_vec) #更新权重 self._update_weights(input_vec,output,label,rate) def _update_weights(self,input_vec,output,label,rate): ''' 按照感知器规则更新权重 ''' # 把input_vec[x1,x2,x3...]和weights[w1,w2,w3...]打包在一起 # 变成[(x1,w1),(x2,w2),...] #然后利用感知器规则更新权重 def k(t): return t[1] + rate * delta * t[0] delta = label - output self.weights = map(k,zip(input_vec,self.weights)) #更新bias self.bias += rate*delta def m(x): ''' 定义激活函数m ''' return 1 if x>0 else 0 def get_training_dataset(): ''' 基于and真值表构建训练数据 ''' #构建训练数据 #输入向量列表 input_vecs = [[1,1],[0,0],[1,0],[0,1]] #期望的输出列表,注意要与输入一一对应 #[1,1]->1, [0,0]->0, [1,0]->0, [0,1]->0 labels = [1,0,0,0] return input_vecs,labels def train_and_perceptron(): ''' 使用and真值表训练感知器 ''' #创建感知器,输入参数个数为2(因为and是二元函数),激活函数为m p = Perceptron(2,m) #训练,迭代10轮,学习速率为0.1 input_vecs,labels = get_training_dataset() p.train(input_vecs,labels,10,0.1) #返回训练好的感知器 return p if __name__ == '__main__': #训练and感知器 and_perceptron = train_and_perceptron() #打印训练获得的权重 print(and_perceptron) #测试 print('1 and 1 = %d' % and_perceptron.perdict([1,1])) print('0 and 0 = %d' % and_perceptron.perdict([0,0])) print('1 and 0 = %d' % and_perceptron.perdict([1,0])) print('0 and 1 = %d' % and_perceptron.perdict([0,1]))
如何去除文件中的“”问题?
原文件数据格式:userdata_31_clean.csv![图片说明](https://img-ask.csdn.net/upload/201912/02/1575298119_572096.png) 数据提取代码: ``` import pandas as pd table = pd.read_csv('userdata_31_clean.csv',sep = ',',encoding = 'utf-8') len=table.shape[0] #第二维长度 ind=pd.Series(list(range(len))) #创建一个一维列表数组 data=pd.DataFrame(index=(range(len)),columns=('id','time','jd','wd')) #data中加入一行数据 j=-1 for i in table.iloc[:,0]: #使用iloc方法提取table读到的数据中的第0列并用i遍历 a=i.split(';') #列用“;”对i中数据进行分割 c=[a[0],a[2],a[3],a[4]] #创建一个数组由。。组成 data.values[j]=c #以行添加 j=j+1 print(data.head()) #打印data的头 #data['id']=data['id'].astype('str') ind=data['id'].drop_duplicates() #对ID去重 for i in ind: data1=data.loc[data['id']==i,:] #提取data["id"]=i的行 name='userdata_'+i+'.csv' #建立i变化的文件 data1.to_csv(name,index=False,encoding="gbk") #存储data1于name文件,非布尔类型 ``` ![图片说明](https://img-ask.csdn.net/upload/201912/02/1575298337_244104.png) 提取结果: ![图片说明](https://img-ask.csdn.net/upload/201912/02/1575298398_924675.png) **如何删除提取的数据中多余的""""""?**
小白求教numpy中用bool选取数据的问题
书上说“通过布尔索引选取数组中的数据,将总是创建数据的副本” ,但下面的例子中 data[data<0]=0 却可以将原data数组中的负数设置为0,不是说是副本吗![图片说明](http://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/001/face/34.gif)
python爬虫scrapy爬取了数据无法写入json
用scrapy成功爬取了商品数据,但是到目录下却发现数据文件没有创建,郁闷。。pipelines文件代码如下 ``` import codecs import json class AutopjtPipeline(object): def _int_(self): self.file=codecs.open("77.json","wb",encoding="utf-8") def process_item(self, item, spider): for j in range(0,len(item["name"])): name = item["name"][j] price=item["price"][j] comnum = item["comnum"][j] link = item["link"][j] # 将当前页下第j个商品的name、price、comnum、link等信息处理一下,重新组合成一个字典 goods = {"name": name, "price": price, "comnum": comnum, "link": link} # 将组合后的当前页中第j个商品的数据写入json文件 i = json.dumps(dict(goods), ensure_ascii=False) line = i + '\n' self.file.write(line) # 返回item return item def close_spider(self,spider): self.file.close() ``` 同时报错 Traceback (most recent call last): File "c:\users\93422\appdata\local\programs\python\python35\lib\site-packages\twisted\internet\defer.py", line 654, in _runCallbacks current.result = callback(current.result, *args, **kw) File "C:\Users\93422\Desktop\python\autopjt\autopjt\pipelines.py", line 28, in close_spider self.file.close() AttributeError: 'AutopjtPipeline' object has no attribute 'file' items文件代码以及爬虫代码都基本没问题,爬虫代码如下 ```import scrapy from autopjt.items import AutopjtItem from scrapy.http import Request class AutospdSpider(scrapy.Spider): name = 'autospd' allowed_domains = ['dangdang.com'] start_urls = ['http://category.dangdang.com/pg1-cid4003872-srsort_sale_amt_desc.html' ] def parse(self, response): item=AutopjtItem() item['name']=response.xpath("//p[@class='name']/@title").extract() item['price']=response.xpath('//span[@class="price_n"]/text()').extract() item['link']=response.xpath('//p[@class="name"]/@href').extract() item['comnum']=response.xpath('//a[@ddclick]/text()').extract() yield item for i in range(1,20): url="http://category.dangdang.com/pg"+str(i)+"-cid4003872-srsort_sale_amt_desc.html" yield Request(url,callback=self.parse) ```
C++调用python脚本(test.py这个脚本中import numpy)程序崩溃
我想在c++中调用python的一个脚本,这个脚本中我只是import了一个numpy就报错了,而如果是简单的脚本(没有import第三方库)就不会出错,我已经把: INCLUDEPATH += C:/Python27/include/ LIBS += C:/Python27/libs/python27.lib 添加进去了, ``` pyrun_simplestring("import sys"); pyrun_simplestring("import numpy"); pyrun_simplestring("sys.path.append('c:\python27\lib\site-packages\')"); pyerr_print(); pyobject * pmodule = null; pyobject * pfunc = null; pmodule =pyimport_importmodule("test_my"); //test001:python文件名 pfunc= pyobject_getattrstring(pmodule, "testdict"); //add:python文件中的函数名 pyobject *pargs = pytuple_new(1); pyobject *pdict = pydict_new(); //创建字典类型变量 pydict_setitemstring(pdict, "name", py_buildvalue("s", "wangyao")); //往字典类型变量中填充数据 pydict_setitemstring(pdict, "age", py_buildvalue("i", 25)); //往字典类型变量中填充数据 pytuple_setitem(pargs, 0, pdict); //0---序号 将字典类型变量添加到参数元组中 pyobject *preturn = null; preturn = pyeval_callobject(pfunc, pargs); //调用函数 int size = pydict_size(preturn); cout << "返回字典的大小为: " << size << endl; pyobject *pnewage = pydict_getitemstring(preturn, "age"); int newage; pyarg_parse(pnewage, "i", &newage); cout << "true age: " << newage << endl; py_finalize(); ``` 这是python的脚本: ``` #import numpy as np def HelloWorld(): print "Hello World" def add(a, b): #tmp=np.random.randint(10,88) return a+b def TestDict(dict): print dict dict["Age"] = 17 return dict class Person: def greet(self, greetStr): print greetStr #print add(5,7) #a = raw_input("Enter To Continue...") ``` 老是报错,但如果我把import numpy去掉就没问题,求大神解答,困扰好久了~~~
python3,windos7系统提示AttributeError: 'Feijidazhan' object has no attribute 'back_group'
1AttributeError: 'Feijidazhan' object has no attribute 'back_group' ```class Feijidazhan(object): def __init__(self): print("初始化游戏") #1创建游戏窗口 self.feiji_mode = pygame.display.set_mode(DA_XIAO.size) #2 创建游戏时钟 self.clock = pygame.time.Clock() #3私有方法精灵和精灵组的创建 def spirit_jiling(self): #1背景滚动 beijing = Bjinjing(".\\images\\background.png") self.back_group = pygame.sprite.Group(beijing) def start_game(self):#开始游戏 print("开始游戏") while True: # 1刷新帧率 self.clock.tick(ZHEN_LV) # 2事件监听 self.__jian_ting() # 3碰撞检测 self.__peng_zhuang() # 4更新绘制精灵,英雄 self.__hui_zhi() # 5更新显示 pygame.display.update() def __jian_ting(self): for event in pygame.event.get(): if event.type == pygame.QUIT: Feijidazhan.__game_over() def __peng_zhuang(self): pass def __hui_zhi(self): self.back_group.update() self.back_group.draw(self.feiji_mode) @staticmethod def __game_over(): print("游戏结束") pygame.quit() exit() if __name__ == '__main__': #创建对象 game_ = Feijidazhan() #启动游戏 ```
130 个相见恨晚的超实用网站,一次性分享出来
相见恨晚的超实用网站 持续更新中。。。
字节跳动视频编解码面经
三四月份投了字节跳动的实习(图形图像岗位),然后hr打电话过来问了一下会不会opengl,c++,shador,当时只会一点c++,其他两个都不会,也就直接被拒了。 七月初内推了字节跳动的提前批,因为内推没有具体的岗位,hr又打电话问要不要考虑一下图形图像岗,我说实习投过这个岗位不合适,不会opengl和shador,然后hr就说秋招更看重基础。我当时想着能进去就不错了,管他哪个岗呢,就同意了面试...
win10系统安装教程(U盘PE+UEFI安装)
一、准备工作 u盘,电脑一台,win10原版镜像(msdn官网) 二、下载wepe工具箱 极力推荐微pe(微pe官方下载) 下载64位的win10 pe,使用工具箱制作启动U盘打开软件, 选择安装到U盘(按照操作无需更改) 三、重启进入pe系统 1、关机后,将U盘插入电脑 2、按下电源后,按住F12进入启动项选择(技嘉主板是F12) 选择需要启...
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过...
Python——画一棵漂亮的樱花树(不同种樱花+玫瑰+圣诞树喔)
最近翻到一篇知乎,上面有不少用Python(大多是turtle库)绘制的树图,感觉很漂亮,我整理了一下,挑了一些我觉得不错的代码分享给大家(这些我都测试过,确实可以生成) one 樱花树 动态生成樱花 效果图(这个是动态的): 实现代码 import turtle as T import random import time # 画樱花的躯干(60,t) def Tree(branch, ...
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
《奇巧淫技》系列-python!!每天早上八点自动发送天气预报邮件到QQ邮箱
将代码部署服务器,每日早上定时获取到天气数据,并发送到邮箱。 也可以说是一个小人工智障。 思路可以运用在不同地方,主要介绍的是思路。
致 Python 初学者
欢迎来到“Python进阶”专栏!来到这里的每一位同学,应该大致上学习了很多 Python 的基础知识,正在努力成长的过程中。在此期间,一定遇到了很多的困惑,对未来的学习方向感到迷茫。我非常理解你们所面临的处境。我从2007年开始接触 python 这门编程语言,从2009年开始单一使用 python 应对所有的开发工作,直至今天。回顾自己的学习过程,也曾经遇到过无数的困难,也曾经迷茫过、困惑过。开办这个专栏,正是为了帮助像我当年一样困惑的 Python 初学者走出困境、快速成长。希望我的经验能真正帮到你
Java描述设计模式(19):模板方法模式
本文源码:GitHub·点这里 || GitEE·点这里 一、生活场景 通常一款互联网应用的开发流程如下:业务需求,规划产品,程序开发,测试交付。现在基于模板方法模式进行该过程描述。 public class C01_InScene { public static void main(String[] args) { DevelopApp developApp = n...
加快推动区块链技术和产业创新发展,2019可信区块链峰会在京召开
11月8日,由中国信息通信研究院、中国通信标准化协会、中国互联网协会、可信区块链推进计划联合主办,科技行者协办的2019可信区块链峰会将在北京悠唐皇冠假日酒店开幕。   区块链技术被认为是继蒸汽机、电力、互联网之后,下一代颠覆性的核心技术。如果说蒸汽机释放了人类的生产力,电力解决了人类基本的生活需求,互联网彻底改变了信息传递的方式,区块链作为构造信任的技术有重要的价值。   1...
C语言魔塔游戏
很早就很想写这个,今天终于写完了。 游戏截图: 编译环境: VS2017 游戏需要一些图片,如果有想要的或者对游戏有什么看法的可以加我的QQ 2985486630 讨论 下面我来介绍一下游戏的主要功能和实现方式 首先是玩家的定义,使用结构体,这个名字是可以自己改变的 struct gamerole { char name[20] = "黑蛋"; //玩家名字 int...
第三个java程序(表白小卡片)
前言: &nbsp;向女神表白啦,作为一个程序员,当然也有爱情啦。只不过,虽然前面两个程序都只是学习了基础的语法结构和向量哈希表。这里涉及的是Swing,awt图形用户界面和一点文件输入输出流的知识。 &nbsp; 表白代码如下: 另附:里面的音乐和图片可以放在一个自己创建的包里面,也可以放在src里面,或者使用绝对路径。至于布局,我自己的使用的是简单的排班,简单的继承。后面的程序会慢慢实现。 ...
8年经验面试官详解 Java 面试秘诀
作者 |胡书敏 责编 | 刘静 出品 | CSDN(ID:CSDNnews) 本人目前在一家知名外企担任架构师,而且最近八年来,在多家外企和互联网公司担任Java技术面试官,前后累计面试了有两三百位候选人。在本文里,就将结合本人的面试经验,针对Java初学者、Java初级开发和Java开发,给出若干准备简历和准备面试的建议。 Java程序员准备和投递简历的实...
知乎高赞:中国有什么拿得出手的开源软件产品?(整理自本人原创回答)
知乎高赞:中国有什么拿得出手的开源软件产品? 在知乎上,有个问题问“中国有什么拿得出手的开源软件产品(在 GitHub 等社区受欢迎度较好的)?” 事实上,还不少呢~ 本人于2019.7.6进行了较为全面的回答,对这些受欢迎的 Github 开源项目分类整理如下: 分布式计算、云平台相关工具类 1.SkyWalking,作者吴晟、刘浩杨 等等 仓库地址: apache/skywalking 更...
化繁为简 - 腾讯计费高一致TDXA的实践之路
导语:腾讯计费是孵化于支撑腾讯内部业务千亿级营收的互联网计费平台,在如此庞大的业务体量下,腾讯计费要支撑业务的快速增长,同时还要保证每笔交易不错账。采用最终一致性或离线补...
Linux网络服务-----实验---PXE和Kickstart的无人值守装机
目录 一.PXE的原理 二.kickstart的原理 三.PXE与kickstart的结合使用自动装机 一.PXE的原理 PXE(preboot execute environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服务器下载映像,并由支持通过网络启动操作系统,再启动过程中,终端要求服务器分配IP地址...
究竟你适不适合买Mac?
我清晰的记得,刚买的macbook pro回到家,开机后第一件事情,就是上了淘宝网,花了500元钱,找了一个上门维修电脑的师傅,上门给我装了一个windows系统。。。。。。 表砍我。。。 当时买mac的初衷,只是想要个固态硬盘的笔记本,用来运行一些复杂的扑克软件。而看了当时所有的SSD笔记本后,最终决定,还是买个好(xiong)看(da)的。 已经有好几个朋友问我mba怎么样了,所以今天尽量客观...
A*搜索算法概述
编者按:本文作者奇舞团前端开发工程师魏川凯。A*搜索算法(A-star search algorithm)是一种常见且应用广泛的图搜索和寻径算法。A*搜索算法是通过使用启...
程序员写了一个新手都写不出的低级bug,被骂惨了。
这种新手都不会范的错,居然被一个工作好几年的小伙子写出来,差点被当场开除了。
Java工作4年来应聘要16K最后没要,细节如下。。。
前奏: 今天2B哥和大家分享一位前几天面试的一位应聘者,工作4年26岁,统招本科。 以下就是他的简历和面试情况。 基本情况: 专业技能: 1、&nbsp;熟悉Sping了解SpringMVC、SpringBoot、Mybatis等框架、了解SpringCloud微服务 2、&nbsp;熟悉常用项目管理工具:SVN、GIT、MAVEN、Jenkins 3、&nbsp;熟悉Nginx、tomca...
2020年,冯唐49岁:我给20、30岁IT职场年轻人的建议
点击“技术领导力”关注∆每天早上8:30推送 作者|Mr.K 编辑| Emma 来源|技术领导力(ID:jishulingdaoli) 前天的推文《冯唐:职场人35岁以后,方法论比经验重要》,收到了不少读者的反馈,觉得挺受启发。其实,冯唐写了不少关于职场方面的文章,都挺不错的。可惜大家只记住了“春风十里不如你”、“如何避免成为油腻腻的中年人”等不那么正经的文章。 本文整理了冯...
从顶级黑客到上市公司老板
一看标题,很多老读者就知道我在写什么了。今天Ucloud成功上市,季昕华成为我所熟悉的朋友里又双叒叕一个成功上市的案例。我们认识大概是十五年多吧,如果没记错,第一次见面应该是2004年,...
蓝桥杯知识点汇总:基础知识和常用算法
文章目录基础语法部分:算法竞赛常用API:算法部分数据结构部分 此系列包含蓝桥杯绝大部分所考察的知识点,以及真题题解~ 基础语法部分: 备战蓝桥杯java(一):一般输入输出 和 快速输入输(BufferedReader&amp;BufferedWrite) 备战蓝桥杯java(二):java编程规范和常用数据类型 备战蓝桥杯java(三):常用功能符以及循环结构和分支结构 备战蓝桥杯java(四...
作为一个程序员,CPU的这些硬核知识你必须会!
CPU对每个程序员来说,是个既熟悉又陌生的东西? 如果你只知道CPU是中央处理器的话,那可能对你并没有什么用,那么作为程序员的我们,必须要搞懂的就是CPU这家伙是如何运行的,尤其要搞懂它里面的寄存器是怎么一回事,因为这将让你从底层明白程序的运行机制。 随我一起,来好好认识下CPU这货吧 把CPU掰开来看 对于CPU来说,我们首先就要搞明白它是怎么回事,也就是它的内部构造,当然,CPU那么牛的一个东...
破14亿,Python分析我国存在哪些人口危机!
一、背景 二、爬取数据 三、数据分析 1、总人口 2、男女人口比例 3、人口城镇化 4、人口增长率 5、人口老化(抚养比) 6、各省人口 7、世界人口 四、遇到的问题 遇到的问题 1、数据分页,需要获取从1949-2018年数据,观察到有近20年参数:LAST20,由此推测获取近70年的参数可设置为:LAST70 2、2019年数据没有放上去,可以手动添加上去 3、将数据进行 行列转换 4、列名...
强烈推荐10本程序员在家读的书
很遗憾,这个春节注定是刻骨铭心的,新型冠状病毒让每个人的神经都是紧绷的。那些处在武汉的白衣天使们,尤其值得我们的尊敬。而我们这些窝在家里的程序员,能不外出就不外出,就是对社会做出的最大的贡献。 有些读者私下问我,窝了几天,有点颓丧,能否推荐几本书在家里看看。我花了一天的时间,挑选了 10 本我最喜欢的书,你可以挑选感兴趣的来读一读。读书不仅可以平复恐惧的压力,还可以对未来充满希望,毕竟苦难终将会...
Linux自学篇——linux命令英文全称及解释
man: Manual 意思是手册,可以用这个命令查询其他命令的用法。 pwd:Print working directory 意思是密码。 su:Swith user 切换用户,切换到root用户 cd:Change directory 切换目录 ls:List files 列出目录下的文件 ps:Process Status 进程状态 mkdir:Make directory ...
Python实战:抓肺炎疫情实时数据,画2019-nCoV疫情地图
今天,群里白垩老师问如何用python画武汉肺炎疫情地图。白垩老师是研究海洋生态与地球生物的学者,国家重点实验室成员,于不惑之年学习python,实为我等学习楷模。先前我并没有关注武汉肺炎的具体数据,也没有画过类似的数据分布图。于是就拿了两个小时,专门研究了一下,遂成此文。
疫情数据接口api
返回json示例 { "errcode":0,//0标识接口正常 "data":{ "date":"2020-01-30 07:47:23",//实时更新时间 "diagnosed":7736,//确诊人数 "suspect":12167,//疑是病例人数 "death":170,//死亡人数 "cur...
智力题(程序员面试经典)
NO.1  有20瓶药丸,其中19瓶装有1克/粒的药丸,余下一瓶装有1.1克/粒的药丸。给你一台称重精准的天平,怎么找出比较重的那瓶药丸?天平只能用一次。 解法 有时候,严格的限制条件有可能反倒是解题的线索。在这个问题中,限制条件是天平只能用一次。 因为天平只能用一次,我们也得以知道一个有趣的事实:一次必须同时称很多药丸,其实更准确地说,是必须从19瓶拿出药丸进行称重。否则,如果跳过两瓶或更多瓶药...
相关热词 c# 识别回车 c#生成条形码ean13 c#子控制器调用父控制器 c# 写大文件 c# 浏览pdf c#获取桌面图标的句柄 c# list反射 c# 句柄 进程 c# 倒计时 线程 c# 窗体背景色
立即提问