Questions tagged «python»

Python是一种多范式,动态类型的多用途编程语言。它旨在快速学习,理解和使用并强制使用干净统一的语法。请注意,Python 2自2020年1月1日起已不再受支持。不过,对于特定于版本的Python问题,请添加[python-2.7]或[python-3.x]标签。使用Python变体或库(例如Jython,PyPy,Pandas,Numpy)时,请将其包含在标签中。

4
使用pcolor在matplotlib中进行热图绘制?
我想制作一个像这样的热图(显示在FlowingData上): 源数据在这里,但是可以使用随机数据和标签,即 import numpy column_labels = list('ABCD') row_labels = list('WXYZ') data = numpy.random.rand(4,4) 在matplotlib中制作热图非常简单: from matplotlib import pyplot as plt heatmap = plt.pcolor(data) 我什至发现了一个看起来正确的colormap参数:heatmap = plt.pcolor(data, cmap=matplotlib.cm.Blues) 但是除此之外,我不知道如何显示列和行的标签以及如何以正确的方向显示数据(起源在左上角而不是左下角)。 尝试操作heatmap.axes(例如heatmap.axes.set_xticklabels = column_labels)都失败了。我在这里想念什么?

11
使用Python / NumPy对数组中的项目进行排名,而无需对数组进行两次排序
我有一个数字数组,我想创建另一个数组,该数组代表第一个数组中每个项目的等级。我正在使用Python和NumPy。 例如: array = [4,2,7,1] ranks = [2,1,3,0] 这是我想出的最好方法: array = numpy.array([4,2,7,1]) temp = array.argsort() ranks = numpy.arange(len(array))[temp.argsort()] 有没有更好/更快的方法可以避免对数组进行两次排序?
100 python  sorting  numpy 

3
根据最后出现的分隔符将字符串分成2个
我想知道在python中是否有任何内置函数根据最后一次出现的分隔符将字符串分为2部分。 例如:考虑字符串“ abc,d,e,f”,在分隔符“,”分割后,我希望输出为 “ abc,d,e”和“ f”。 我知道如何操作字符串以获取所需的输出,但是我想知道python中是否有内置函数。
100 python  string 

11
bash:mkvirtualenv:找不到命令
按照Doug Hellman的virtualenvwrapper帖子中的说明进行操作后,我仍然无法启动测试环境。 [mpenning@tsunami ~]$ mkvirtualenv test -bash: mkvirtualenv: command not found [mpenning@tsunami ~]$ 请注意,我使用WORKON_HOME的不在我的$HOME。我尝试/usr/local/bin/virtualenvwrapper.sh按virtualenvwrapper安装文档中所示进行查找,但是它不存在。 如果这很重要,我正在运行CentOS 6和python 2.6.6。 # File: ~/.bash_profile # ... export WORKON_HOME="/opt/virtual_env/" source "/opt/virtual_env/bin/virtualenvwrapper_bashrc"

4
如何取消转义的反斜杠字符串?
假设我有一个字符串,它是另一个字符串的反斜杠转义版本。在Python中,有没有一种简便的方法可以使字符串不转义?例如,我可以这样做: >>> escaped_str = '"Hello,\\nworld!"' >>> raw_str = eval(escaped_str) >>> print raw_str Hello, world! >>> 但是,这涉及将(可能不受信任的)字符串传递给eval(),这是安全隐患。标准库中是否有一个函数可以接收一个字符串并生成一个不涉及安全性的字符串?
100 python  string  escaping 

3
需要为Python 3.5.1安装urllib2
我正在为Mac运行Python 3.5.1。我想使用urllib2模块。我尝试安装它,但被告知它已被拆分成Python 3 urllib.request并urllib.error用于Python 3。 我的命令(现在不在框架bin目录中运行,因为它不在我的路径中): sudo ./pip3 install urllib.request 返回此: Could not find a version that satisfies the requirement urllib.request (from versions: ) No matching distribution found for urllib.request 在尝试一口气安装之前,我遇到了同样的错误urllib2。

5
Python中的“线程本地存储”是什么,为什么需要它?
特别是在Python中,变量如何在线程之间共享? 尽管我threading.Thread以前从未使用过,但从未真正理解或看到过如何共享变量的示例。它们是在主线程和子线程之间共享还是仅在子线程之间共享?我何时需要使用线程本地存储来避免这种共享? 我已经看到许多关于通过使用锁在线程之间同步访问共享数据的警告,但是我还没有看到一个很好的问题示例。 提前致谢!

2
熊猫:在数据框中创建两个新列,并使用从现有列中计算出的值
我正在使用pandas库,我想将两个新列添加到df具有n列(n> 0)的数据框中。 这些新列是由于将函数应用于数据框中的某一列而产生的。 要应用的功能如下: def calculate(x): ...operate... return z, y 为仅返回值的函数创建新列的一种方法是: df['new_col']) = df['column_A'].map(a_function) 因此,我想要的但尝试失败的(*)是这样的: (df['new_col_zetas'], df['new_col_ys']) = df['column_A'].map(calculate) 实现此目的的最佳方法是什么?我毫无头绪地扫描了文档。 ** df['column_A'].map(calculate)返回一个熊猫系列,每个项目都由一个元组z,y组成。尝试将其分配给两个数据框列会产生ValueError。*
100 python  pandas 


5
__lt__代替__cmp__
Python 2.x有两种方法可以重载比较运算符,__cmp__也可以是“丰富的比较运算符”,例如__lt__。 富比较重载据说是首选,但是为什么会这样呢? 丰富的比较运算符更易于实现,但是您必须使用几乎相同的逻辑来实现其中的多个运算符。但是,如果可以使用内建cmp和元组排序,则将__cmp__变得非常简单并完成所有比较: class A(object): def __init__(self, name, age, other): self.name = name self.age = age self.other = other def __cmp__(self, other): assert isinstance(other, A) # assumption for this example return cmp((self.name, self.age, self.other), (other.name, other.age, other.other)) 这种简单性似乎比重载所有6(!)丰富的比较要好得多。(但是,如果您依靠“交换参数” /反映的行为,则可以将其降低到“仅” 4,但根据我的拙见,这会导致并发症的净增加。) 如果我只是超负荷工作,是否需要注意任何不可预见的陷阱__cmp__? 我明白了<,<=,==等运营商也可以被重载用于其他目的,并且可以返回任何对象,他们喜欢。我并不是在问这种方法的优点,而只是在询问使用这些运算符进行比较时的区别,就如同它们对数字的含义一样。 更新:正如Christopher 指出的那样,cmp它在3.x中消失了。有没有其他选择可以像上面那样轻松实现比较__cmp__?

10
是否有一个内置的numpy来拒绝列表中的离群值
是否有内置的numpy来执行以下操作?也就是说,获取一个列表d并返回一个列表,filtered_d其中根据中假定的点的某些分布,删除了所有外围元素d。 import numpy as np def reject_outliers(data): m = 2 u = np.mean(data) s = np.std(data) filtered = [e for e in data if (u - 2 * s < e < u + 2 * s)] return filtered >>> d = [2,4,5,1,6,5,40] >>> filtered_d = reject_outliers(d) >>> print filtered_d …
100 python  numpy 


14
格式使用标准json模块浮动
我正在使用python 2.6中的标准json模块来序列化float列表。但是,我得到这样的结果: >>> import json >>> json.dumps([23.67, 23.97, 23.87]) '[23.670000000000002, 23.969999999999999, 23.870000000000001]' 我希望浮点数仅使用两位十进制数字进行格式化。输出应如下所示: >>> json.dumps([23.67, 23.97, 23.87]) '[23.67, 23.97, 23.87]' 我尝试定义自己的JSON Encoder类: class MyEncoder(json.JSONEncoder): def encode(self, obj): if isinstance(obj, float): return format(obj, '.2f') return json.JSONEncoder.encode(self, obj) 这适用于唯一的float对象: >>> json.dumps(23.67, cls=MyEncoder) '23.67' 但是对于嵌套对象失败: >>> json.dumps([23.67, 23.97, 23.87]) '[23.670000000000002, 23.969999999999999, 23.870000000000001]' 我不想有外部依赖性,所以我更喜欢使用标准的json模块。 …

11
是否有一种简单的方法来腌制python函数(或以其他方式序列化其代码)?
我正在尝试通过网络连接(使用asyncore)传输功能。是否有一种简单的方法来序列化python函数(至少在这种情况下不会有副作用),以便像这样进行传输? 理想情况下,我希望有一对类似于以下的函数: def transmit(func): obj = pickle.dumps(func) [send obj across the network] def receive(): [receive obj from the network] func = pickle.loads(s) func()
100 python  function  pickle 

6
如何实现__getattribute__而没有无限递归错误?
我想覆盖对类中一个变量的访问,但通常返回所有其他变量。我该怎么做__getattribute__呢? 我尝试了以下操作(它也应说明我要执行的操作),但是出现了递归错误: class D(object): def __init__(self): self.test=20 self.test2=21 def __getattribute__(self,name): if name=='test': return 0. else: return self.__dict__[name] >>> print D().test 0.0 >>> print D().test2 ... RuntimeError: maximum recursion depth exceeded in cmp
100 python  class  oop  recursion  getattr 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.