Questions tagged «python»

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

3
在matplotlib中的次要y轴上添加y轴标签
我可以使用将y标签添加到左侧的y轴plt.ylabel,但是如何将其添加到辅助y轴呢? table = sql.read_frame(query,connection) table[0].plot(color=colors[0],ylim=(0,100)) table[1].plot(secondary_y=True,color=colors[1]) plt.ylabel('$')
118 python  matplotlib 

9
Python如何管理int和long?
有人知道Python如何在内部管理int和long类型吗? 它会动态选择合适的类型吗? 一个整数的限制是多少? 我正在使用Python 2.6,与以前的版本有所不同吗? 我应该如何理解以下代码? >>> print type(65535) <type 'int'> >>> print type(65536*65536) <type 'long'> 更新: >>> print type(0x7fffffff) <type 'int'> >>> print type(0x80000000) <type 'long'>
118 python  integer 

3
如何抑制熊猫未来警告?
当我运行程序时,Pandas每次都会发出如下“未来警告”。 D:\Python\lib\site-packages\pandas\core\frame.py:3581: FutureWarning: rename with inplace=True will return None from pandas 0.11 onward " from pandas 0.11 onward", FutureWarning) 我得到了消息,但我只是想一次又一次地停止Pandas显示这样的消息,是否可以设置任何buildin参数,以使Pandas不会弹出“未来警告”?


1
模拟函数引发异常以测试except块
我有一个foo调用另一个函数(bar)的函数()。如果调用bar()引发一个HttpError,如果状态代码为404,我想特别处理它,否则重新引发。 我正在尝试围绕此foo函数编写一些单元测试,以模拟对的调用bar()。不幸的是,我无法得到模拟调用bar()以引发被我的代码except块捕获的异常。 这是说明我问题的代码: import unittest import mock from apiclient.errors import HttpError class FooTests(unittest.TestCase): @mock.patch('my_tests.bar') def test_foo_shouldReturnResultOfBar_whenBarSucceeds(self, barMock): barMock.return_value = True result = foo() self.assertTrue(result) # passes @mock.patch('my_tests.bar') def test_foo_shouldReturnNone_whenBarRaiseHttpError404(self, barMock): barMock.side_effect = HttpError(mock.Mock(return_value={'status': 404}), 'not found') result = foo() self.assertIsNone(result) # fails, test raises HttpError @mock.patch('my_tests.bar') def test_foo_shouldRaiseHttpError_whenBarRaiseHttpErrorNot404(self, barMock): barMock.side_effect …

6
在Python中,什么时候应该使用函数而不是方法?
Python的Zen指出,只有一种方法可以做事情-但我经常遇到决定何时使用函数以及何时使用方法的问题。 让我们举一个简单的例子-ChessBoard对象。假设我们需要某种方式使董事会上所有合法的King举动均可用。我们是否编写ChessBoard.get_king_moves()或get_king_moves(chess_board)? 这是我看过的一些相关问题: 为什么python使用“魔术方法”? Python字符串没有字符串长度方法是有原因的吗? 我得到的答案基本上没有定论: 为什么Python使用方法来实现某些功能(例如list.index()),却使用其他方法(例如len(list))呢? 主要原因是历史。函数用于那些对一组类型通用的操作,即使对于根本没有方法的对象(例如元组),这些操作也可以使用。使用Python的功能特性(map(),apply()等)时,具有可以轻松应用于对象的不定形集合的函数也很方便。 实际上,将len(),max(),min()实现为内置函数实际上比将它们实现为每种类型的方法要少。人们可能会质疑个别情况,但这是Python的一部分,现在进行这样的基本更改为时已晚。必须保留功能以避免大量代码损坏。 尽管很有趣,但是上面并没有真正说明采用哪种策略。 这是原因之一-使用自定义方法,开发人员可以自由选择其他方法名称,例如getLength(),length(),getlength()或其他名称。Python强制执行严格的命名,以便可以使用通用函数len()。 稍微有趣一点。我认为函数在某种意义上是接口的Pythonic版本。 最后,来自Guido本人: 谈论能力/接口使我想到了一些“流氓”特殊方法名称。在《语言参考》中,它说:“类可以通过定义具有特殊名称的方法来实现某些由特殊语法调用的操作(例如算术运算或下标和切片)。” 但是,所有这些带有特殊名称的方法(例如__len__或)__unicode__似乎都是为内置函数的利益提供的,而不是为了支持语法。大概在基于接口的Python中,这些方法将在ABC上变成常规命名的方法,因此 __len__将成为 class container: ... def len(self): raise NotImplemented 虽然,再想一想,我不明白为什么所有的句法运算都不会仅仅在特定的ABC上调用适当的通常命名的方法。“ <”举例来说,大概会调用“ object.lessthan”(或者是“ comparable.lessthan“)。因此,另一个好处是能够使Python摆脱这种乱七八糟的名字,对我而言这似乎是HCI的改进。 嗯 我不确定我是否同意(图:-)。 我首先要解释“ Python基本原理”的两个方面。 首先,出于HCI的原因,我选择了len(x)而不是x.len()(def __len__()后来出现了)。实际上,两个HCI相互交织在一起: (a)对于某些运算,前缀表示法比后缀读得更好-前缀(和infix!)操作在数学中具有悠久的传统,喜欢在视觉上帮助数学家思考问题的表示法。比较与我们改写像公式简单x*(a+b)到x*a + x*b使用原始OO符号做同样的事情的笨拙。 (b)当我读到说的代码时,len(x)我知道那是在问某物的长度。这告诉我两件事:结果是整数,参数是某种容器。相反,当我阅读本文时x.len(),我必须已经知道这x是一种实现接口或从具有standard的类继承的容器len()。当未实现映射的类具有get()或keys() 方法,或者不是文件的某些具有方法时,我们有时会感到困惑write()。 用另一种方式说同样的事情,我将'len'视为内置 操作。我不想失去那个。我不能肯定地说出您是否是那样的意思,但是“ def len(self):...”当然听起来像您想将其降级为普通方法。我对此坚决为-1。 我答应解释的Python基本原理的第二点是为什么我选择了特殊的外观__special__而不是仅仅 选择外观的原因special。我期待类可能要覆盖的许多操作,一些标准(例如__add__或__getitem__),某些不是那么标准(例如,泡菜__reduce__很长一段时间都不支持C代码)。我不希望这些特殊操作使用普通的方法名称,因为那样的话,预先存在的类或用户没有为所有特殊方法存储百科全书的用户编写的类可能会意外地定义它们并非要实现的操作,可能会造成灾难性的后果。伊万·科斯蒂奇(IvanKrstić)在他的信息中对此进行了更为简洁的解释,在我将所有这些内容写完之后,这些信息才得以体现。 ---Guido van Rossum(主页:http ://www.python.org/~guido/ ) 我对此的理解是,在某些情况下,前缀表示法更有意义(即,从语言的角度来看,Duck.quack比quack(Duck)更有意义。)而且,该函数还允许使用“接口”。 …

14
如何从sqlite查询中获取字典?
db = sqlite.connect("test.sqlite") res = db.execute("select * from table") 通过迭代,我得到了对应于行的列表。 for row in res: print row 我可以得到列的名称 col_name_list = [tuple[0] for tuple in res.description] 但是是否有一些功能或设置可以获取字典而不是列表? {'col1': 'value', 'col2': 'value'} 还是我必须自己做?

4
如何使用PIL保存图像?
我刚刚使用Python图像库(PIL)进行了一些图像处理,这是我之前发现的用于执行图像的傅立叶变换的文章,但我无法使用save函数。整个代码运行良好,但不会保存生成的图像: from PIL import Image import numpy as np i = Image.open("C:/Users/User/Desktop/mesh.bmp") i = i.convert("L") a = np.asarray(i) b = np.abs(np.fft.rfft2(a)) j = Image.fromarray(b) j.save("C:/Users/User/Desktop/mesh_trans",".bmp") 我得到的错误如下: save_handler = SAVE[string.upper(format)] # unknown format KeyError: '.BMP' 如何使用Pythons PIL保存图像?

1
熊猫使用什么规则生成视图与副本?
我对Pandas决定从数据框中进行选择是原始数据框的副本或原始数据视图时使用的规则感到困惑。 例如,如果我有 df = pd.DataFrame(np.random.randn(8,8), columns=list('ABCDEFGH'), index=range(1,9)) 我了解a会query传回副本,因此类似 foo = df.query('2 < index <= 5') foo.loc[:,'E'] = 40 将对原始数据帧无效df。我也了解标量或命名切片返回一个视图,因此对它们的赋值(例如 df.iloc[3] = 70 要么 df.ix[1,'B':'E'] = 222 会改变df。但是当涉及到更复杂的案件时,我迷失了。例如, df[df.C <= df.B] = 7654321 变化df,但是 df[df.C <= df.B].ix[:,'B':'E'] 才不是。 是否有一个熊猫正在使用的简单规则,我只是想念它?在这些特定情况下发生了什么;尤其是,如何更改满足特定查询的数据框中的所有值(或值的子集)(就像我在上面的最后一个示例中尝试的那样)? 注意:这和这个问题不一样;并且我已经阅读了文档,但并未对此有所启发。我还阅读了有关此主题的“相关”问题,但我仍然缺少Pandas使用的简单规则,以及如何将其应用于(例如)修改值(或值的子集)在满足特定查询的数据框中。


8
在numpy中将一维数组转换为二维数组
我想通过指定2D数组中的列数将一维数组转换为二维数组。可能会像这样工作: > import numpy as np > A = np.array([1,2,3,4,5,6]) > B = vec2matrix(A,ncol=2) > B array([[1, 2], [3, 4], [5, 6]]) numpy是否具有类似于我的组合函数“ vec2matrix”的功能?(我知道您可以像2D数组一样索引1D数组,但这不是我拥有的代码中的选项-我需要进行此转换。)


5
Argparse:如果存在“ x”,则必需的参数“ y”
我的要求如下: ./xyifier --prox --lport lport --rport rport 对于参数prox,我使用action ='store_true'来检查它是否存在。我不需要任何论点。但是,如果设置了--prox,我也需要 rport和lport。有没有一种简单的方法可以使用argparse做到这一点,而无需编写自定义条件编码。 更多代码: non_int.add_argument('--prox', action='store_true', help='Flag to turn on proxy') non_int.add_argument('--lport', type=int, help='Listen Port.') non_int.add_argument('--rport', type=int, help='Proxy port.')
118 python  argparse 

3
Python-sklearn.pipeline.Pipeline到底是什么?
我不知道如何sklearn.pipeline.Pipeline工作。 在文档中有一些解释。例如,它们的意思是: 带有最终估算器的变换管线。 为了使我的问题更清楚,什么是steps?它们如何运作? 编辑 多亏了答案,我可以使我的问题更清楚: 当我调用管道并通过时,需要两个转换器和一个估计器,例如: pipln = Pipeline([("trsfm1",transformer_1), ("trsfm2",transformer_2), ("estmtr",estimator)]) 我叫这个怎么办? pipln.fit() OR pipln.fit_transform() 我不知道估算器如何成为变压器以及如何装配变压器。


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.