我是 julia 的新手,我正在努力将 julia 代码重写为 python 代码。
我看到了一些使用 .==
表达式的代码。我无法理解这是什么意思。所以我在网上搜索它,但找不到答案。
有人能告诉我 julia 中的 .==
是什么,以及它在 python 中的等价物吗?
仅供参考,它是这样写的。
x = sum(y .== 0) # y is array
答案 0 :(得分:11)
这是一个 Vectorized dot operation,用于将运算符应用于数组。您可以通过列表推导对 Python 中的一维列表执行此操作,但在这里您似乎只是在计算所有零,所以
>>> y = [0,1,1,1,0]
>>> sum(not bool(v) for v in y)
2
其他包,如 numpy
或 pandas
将向量化运算符,所以类似这样的事情会做
>>> 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中做等价的,可以通过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()