Я новичок в julia и работаю над переписыванием кода julia в код python.
И я видел некоторые коды, использующие выражение .==
. Я не мог понять, что это значит. Поэтому я искал его в Интернете, но не нашел ответа.
Может кто-нибудь сказать мне, что такое .==
в julia и его эквивалент в python?
к вашему сведению, это было написано, как показано ниже.
x = sum(y .== 0) # y is array
Большое спасибо за ваши советы и ответы. Я хочу проголосовать, но не могу. Поэтому я хотел бы выразить свою благодарность словами здесь.
Небольшой комментарий — все примеры на Python воспроизводят то, что isequal
делает в Julia, поскольку ==
использует трехзначную логику (поэтому missing
распространяется). Также в Юлии обычно пишут не sum(y .== 0)
, а count(iszero, y)
, так будет быстрее.
Точка здесь для векторных операций: dot call
Он в основном применяет выбранную вами операцию к каждому элементу вашего вектора (см. точечные операторы).
Итак, в вашем случае y .== 0
проверит равенство 0 для каждого элемента вашего вектора y, что означает, что x будет числом значений от y, равным 0.
Что касается того, как сделать эквивалент в python, вы можете сделать это «вручную» с помощью понимания списка или с помощью библиотеки, такой как 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()
синтаксическая ошибка: p (np.array(y) == 0).sum()
@python_learner Я немного поторопился, пропустил (
. Хороший улов
Это векторизованная точечная операция, которая используется для применения оператора к массиву. Вы можете сделать это для одномерных списков в 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
В Джулии это называется «векторизованный оператор» или «точечный оператор». Взгляните на этот раздел официальной документации и посмотрите, отвечает ли он на ваш вопрос.