我正在寻找Pythonic的方式来获取(方形)matrix的所有对angular线,表示为列表的列表。 假设我有以下matrix: matrix = [[-2, 5, 3, 2], [ 9, -6, 5, 1], [ 3, 2, 7, 3], [-1, 8, -4, 8]] 那么大对angular线很容易: l = len(matrix[0]) print [matrix[i][i] for i in range(l)] # [-2, -6, 7, 8] print [matrix[l-1-i][i] for i in range(l-1,-1,-1)] # [ 2, 5, 2, -1] 但是我很难想出一个方法来生成所有的对angular线。 我正在寻找的输出是: [[-2], [9, 5], [3,-6, […]
这是我的代码,非常简单的东西… import csv import json csvfile = open('file.csv', 'r') jsonfile = open('file.json', 'w') fieldnames = ("FirstName","LastName","IDNumber","Message") reader = csv.DictReader( csvfile, fieldnames) out = json.dumps( [ row for row in reader ] ) jsonfile.write(out) 声明一些字段名称,阅读器使用CSV来读取文件,并将字段名称转储为JSON格式的文件。 这是问题… CSV文件中的每条logging都在不同的行上。 我想要JSON输出是相同的方式。 问题是它把所有这一切都排在一条巨大的长线上。 我试过for line in csvfile:使用类似于for line in csvfile:然后在reader = csv.DictReader( line, fieldnames)下面运行我的代码reader = csv.DictReader( line, fieldnames)它循环遍历每一行,但它在一行上执行整个文件,然后遍历整个文件在另一行…继续,直到它用完行。 任何build议纠正这个? 编辑:澄清,目前我有:(第1行的每个logging) […]
我有这样的数据框: ABC 0 1 0.749065 This 1 2 0.301084 is 2 3 0.463468 a 3 4 0.643961 random 4 1 0.866521 string 5 2 0.120737 ! 调用 In [10]: print df.groupby("A")["B"].sum() 将返回 A 1 1.615586 2 0.421821 3 0.463468 4 0.643961 现在我想为“C”列做同样的事情。 由于该列包含string,sum()不起作用(尽pipe您可能认为它会连接string)。 我真正想看到的是每个组的一个或一组string,即 A 1 {This, string} 2 {is, !} 3 {a} 4 {random} […]
我想检测请求是否来自localhost:5000或foo.herokuapp.com主机,请求的path是什么。 如何获取有关Flask请求的信息?
通常情况下,我发现需要成对处理一个列表。 我想知道哪种方法可以做到这一点,并在Google上发现: pairs = zip(t[::2], t[1::2]) 我认为这是足够pythonic,但经过最近的讨论涉及成语与效率 ,我决定做一些testing: import time from itertools import islice, izip def pairs_1(t): return zip(t[::2], t[1::2]) def pairs_2(t): return izip(t[::2], t[1::2]) def pairs_3(t): return izip(islice(t,None,None,2), islice(t,1,None,2)) A = range(10000) B = xrange(len(A)) def pairs_4(t): # ignore value of t! t = B return izip(islice(t,None,None,2), islice(t,1,None,2)) for f in pairs_1, pairs_2, pairs_3, […]
我需要一个快速的方法来计算Python中的整数位数。 我目前的解决scheme是 bin(n).count("1") 但我想知道是否有更快的方式做到这一点? PS:(我代表一个大的2D二进制数组作为数字的单子列表,并进行按位操作,并将时间从几小时缩短到几分钟,现在我想摆脱那些额外的分钟。 编辑:1.它必须在Python 2.7或2.6 对于小数字的优化并不重要,因为这不是一个明确的瓶颈,但是在某些地方我确实有10000个数字的数字 例如这是一个2000位的情况: 12448057941136394342297748548545082997815840357634948550739612798732309975923280685245876950055614362283769710705811182976142803324242407017104841062064840113262840137625582646683068904149296501029754654149991842951570880471230098259905004533869130509989042199261339990315125973721454059973605358766253998615919997174542922163484086066438120268185904663422979603026066685824578356173882166747093246377302371176167843247359636030248569148734824287739046916641832890744168385253915508446422276378715722482359321205673933317512861336054835392844676749610712462818600179225635467147870208L
任何人都知道一个简单的库或函数来parsing一个CSV编码的string,并将其变成一个数组或字典? 我不认为我想要内置csv模块,因为在我看到的所有例子中,使用文件path,而不是string。
我有一个生成一个系列的发生器,例如: def triangleNums(): '''generate series of triangle numbers''' tn = 0 counter = 1 while(True): tn = tn + counter yield tn counter = counter + 1 在Python 2.6中,我可以进行以下调用: g = triangleNums() # get the generator g.next() # get next val 然而在3.0如果我执行相同的两行代码,我得到以下错误: AttributeError: 'generator' object has no attribute 'next' 但是,循环迭代器语法在3.0中工作 for n in triangleNums(): if […]
只是为了好奇,我想知道如何在下面的代码中做到这一点。 我一直在寻找答案,但是没用。 import numpy as np import matplotlib.pyplot as plt data=np.random.exponential(scale=180, size=10000) print ('el valor medio de la distribucion exponencial es: ') print np.average(data) plt.hist(data,bins=len(data)**0.5,normed=True, cumulative=True, facecolor='red', label='datos tamano paqutes acumulativa', alpha=0.5) plt.legend() plt.xlabel('algo') plt.ylabel('algo') plt.grid() plt.show()
下面的代码产生子图之间的差距。 如何消除子图之间的差距,使图像变得紧密? import matplotlib.pyplot as plt for i in range(16): i = i + 1 ax1 = plt.subplot(4, 4, i) plt.axis('on') ax1.set_xticklabels([]) ax1.set_yticklabels([]) ax1.set_aspect('equal') plt.subplots_adjust(wspace=None, hspace=None) plt.show()