我已经断断续续地使用科学python(viafrom pylab import *
)作为免费的Matlab替代品,主要用于化学工程方面的工作(我是IPython笔记本的粉丝)。我一直觉得奇怪的是,与一个对象交互通常有两种不同的方式。例如,如果我有一个数组,我可以用两种方法来判断它的维数:
a = array([1,2,3],[2,3,4])
有一种“Matlab”方法:
shape(a)
或者我可以通过键入以下内容来找到:
a.shape
这似乎与Python的禅相矛盾:“应该有一种——最好只有一种——显而易见的方法。”
我只是想知道为什么做同一件事有多种方法,哪种练习对语言更基本/更自然,从长远来看更适合使用。在
这主要归结为一个偏好问题,但有一些差异,你可能想知道。首先,您应该使用},所以为了避免混淆其他人(和您自己),只需继续并避免导入整个numpy名称空间。在
numpy.shape(a)
或np.shape(a)
,而不是shape(a)
,这是因为“名称空间是一个非常好的主意,让我们做更多这些!”但实际上,numpy有几个名称,您可能会在其他python模块中找到,即array
在python stdlib中显示为array.array
,numpy.array
和{除此之外,
numpy.shape
和大多数其他类似的函数,只需在参数上查找一个shape属性/方法,如果找不到,则尝试将参数转换为数组。代码如下:如果你想要一个“类似数组”的对象的形状,这很有用,你会注意到大多数numpy函数都有“类似数组”的参数。但如果你做的事情像:
^{pr2}$除此之外,它们几乎是一样的。在
最好使用这种方法。毕竟,
shape
的实现无论如何都要服从于方法(来自/numpy/core/fromnumeric.py
):我想很多pylab的东西都是为了帮助那些来自MATLAB的人简化过渡。习惯它吧,因为有很多新的例子,嗯,不是很像Python。在
当你越来越习惯python和matplotlib时,你很可能会想放弃
from pylab import *
,开始编写更多的numpythonic代码,而不是MATLAB风格的工作。在相关问题 更多 >
编程相关推荐