Python > 是什么意思
Python what does > sign
我最近找到了这部分代码:
filteredImage = image > filters.threshold_otsu(image)
在大多数语言中 image > filters.threshold_otsu(image)
会 return true
或 false
。在这种情况下 filteredImage
是 ndarray
。那么这段代码到底发生了什么?
Python 允许运算符重载。因此,您最好查阅您的特定用例的文档 - 正如评论所指出的,这里是一个布尔掩码,但是 python 允许您使用任何运算符来做几乎任何您喜欢的事情。
例如,如果您实现了自己的数组 class,则可以使用 >
来确定一个数组是否比另一个数组长的 class。最好的办法是搜索特定用例的文档并查找运算符。
进一步说明
假设我制作了一个名为 train 的 class,它只包含一根绳子,我想使用 >
将两列火车粘在一起。 (看起来这样做会很好 :P)
class Train:
def __init__(self, cargo):
self.cargo = cargo
def __call__(self):
print("__{0}__".format(self.cargo))
def __gt__(self, another):
self.cargo = "{0}__{1}".format(self.cargo, another.cargo)
# Make two trains
a = Train("check")
b = Train("me")
a()
b()
# Join the trains and print again
a > b
a()
b()
哪个会输出
__check__
__me__
__check__me__
__me__
请注意,我没有使用它来 return 真或假,我什至没有让运算符 return 成为任何东西。在我提供的任何文档中记录这一点对我来说很重要,以告诉您 >
符号的预期用例对我的 class.
这是一个非常有用的功能,一直在使用(例如 numpy 库中的乘法 - python 不能原生乘法 numpy.arrays)。
因为你指出它是一个 ndarray,numpy 使用元素明智比较的矢量化实现和 returns 一个布尔掩码,它也将是一个 numpy 数组。一个例子:
a = np.array([1,2,7,8,9])
b = np.array([1,2,3,4,5])
a <= b
array([ True, True, False, False, False], dtype=bool)
如果对一维数组使用 for 循环,这几乎等同于以下内容:
k = []
for i,j in zip(a,b):
k.append(i<=j)
k = np.array(k)
array([ True, True, False, False, False], dtype=bool)
Numpy 支持几乎所有的运算符。有关更多信息和逻辑功能,您可以查看 Documentation
我最近找到了这部分代码:
filteredImage = image > filters.threshold_otsu(image)
在大多数语言中 image > filters.threshold_otsu(image)
会 return true
或 false
。在这种情况下 filteredImage
是 ndarray
。那么这段代码到底发生了什么?
Python 允许运算符重载。因此,您最好查阅您的特定用例的文档 - 正如评论所指出的,这里是一个布尔掩码,但是 python 允许您使用任何运算符来做几乎任何您喜欢的事情。
例如,如果您实现了自己的数组 class,则可以使用 >
来确定一个数组是否比另一个数组长的 class。最好的办法是搜索特定用例的文档并查找运算符。
进一步说明
假设我制作了一个名为 train 的 class,它只包含一根绳子,我想使用 >
将两列火车粘在一起。 (看起来这样做会很好 :P)
class Train:
def __init__(self, cargo):
self.cargo = cargo
def __call__(self):
print("__{0}__".format(self.cargo))
def __gt__(self, another):
self.cargo = "{0}__{1}".format(self.cargo, another.cargo)
# Make two trains
a = Train("check")
b = Train("me")
a()
b()
# Join the trains and print again
a > b
a()
b()
哪个会输出
__check__
__me__
__check__me__
__me__
请注意,我没有使用它来 return 真或假,我什至没有让运算符 return 成为任何东西。在我提供的任何文档中记录这一点对我来说很重要,以告诉您 >
符号的预期用例对我的 class.
这是一个非常有用的功能,一直在使用(例如 numpy 库中的乘法 - python 不能原生乘法 numpy.arrays)。
因为你指出它是一个 ndarray,numpy 使用元素明智比较的矢量化实现和 returns 一个布尔掩码,它也将是一个 numpy 数组。一个例子:
a = np.array([1,2,7,8,9])
b = np.array([1,2,3,4,5])
a <= b
array([ True, True, False, False, False], dtype=bool)
如果对一维数组使用 for 循环,这几乎等同于以下内容:
k = []
for i,j in zip(a,b):
k.append(i<=j)
k = np.array(k)
array([ True, True, False, False, False], dtype=bool)
Numpy 支持几乎所有的运算符。有关更多信息和逻辑功能,您可以查看 Documentation