什么是 julia 中的“.==”以及它在 python 中的等价物?

时间:2020-12-23 03:41:47

标签: python python-3.x julia

我是 julia 的新手,我正在努力将 julia 代码重写为 python 代码。 我看到了一些使用 .== 表达式的代码。我无法理解这是什么意思。所以我在网上搜索它,但找不到答案。 有人能告诉我 julia 中的 .== 是什么,以及它在 python 中的等价物吗?

仅供参考,它是这样写的。

x = sum(y .== 0)  # y is array

2 个答案:

答案 0 :(得分:11)

这是一个 Vectorized dot operation,用于将运算符应用于数组。您可以通过列表推导对 Python 中的一维列表执行此操作,但在这里您似乎只是在计算所有零,所以

>>> y = [0,1,1,1,0]
>>> sum(not bool(v) for v in y)
2

其他包,如 numpypandas 将向量化运算符,所以类似这样的事情会做

>>> import numpy as np
>>> y = np.array([0,1,1,1,0])
>>> (y == 0).sum()
2
>>>
>>> import pandas as pd
>>> df=pd.DataFrame([[0,1,2,3], [1,2,3,0], [2,3,4,0]])
>>> (df==0).sum()
0    1
1    0
2    0
3    2
dtype: int64
>>> (df==0).sum().sum()
3

答案 1 :(得分:5)

它的作用:

这里的点是向量化操作:dot call

它基本上将您选择的操作应用于向量的每个元素(请参阅 dot operators)。

因此,在您的情况下,y .== 0 将检查向量 y 的每个元素是否等于 0,这意味着 x 将是 y 等于 0 的值的数量。

Python 等效项:

至于如何在python中做等价的,可以通过list comprehension“手工”完成,或者使用numpy等库。示例:

x = sum([i == 0 for i in y])

import numpy as np
x = sum(np.array(y) == 0)
# or
x = (np.array(y) == 0).sum()
相关问题