Что такое ".==" в julia и его эквивалент в python?

Я новичок в julia и работаю над переписыванием кода julia в код python. И я видел некоторые коды, использующие выражение .==. Я не мог понять, что это значит. Поэтому я искал его в Интернете, но не нашел ответа. Может кто-нибудь сказать мне, что такое .== в julia и его эквивалент в python?

к вашему сведению, это было написано, как показано ниже.

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

В Джулии это называется «векторизованный оператор» или «точечный оператор». Взгляните на этот раздел официальной документации и посмотрите, отвечает ли он на ваш вопрос.

PaSTE 23.12.2020 04:53

Большое спасибо за ваши советы и ответы. Я хочу проголосовать, но не могу. Поэтому я хотел бы выразить свою благодарность словами здесь.

CalmPenguin 23.12.2020 05:04

Небольшой комментарий — все примеры на Python воспроизводят то, что isequal делает в Julia, поскольку == использует трехзначную логику (поэтому missing распространяется). Также в Юлии обычно пишут не sum(y .== 0), а count(iszero, y), так будет быстрее.

Bogumił Kamiński 23.12.2020 08:46
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
14
3
1 637
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Что оно делает:

Точка здесь для векторных операций: dot call

Он в основном применяет выбранную вами операцию к каждому элементу вашего вектора (см. точечные операторы).

Итак, в вашем случае y .== 0 проверит равенство 0 для каждого элемента вашего вектора y, что означает, что x будет числом значений от y, равным 0.

Эквивалент Python:

Что касается того, как сделать эквивалент в 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_user 23.12.2020 05:09

@python_learner Я немного поторопился, пропустил (. Хороший улов

smagnan 23.12.2020 05:13
Ответ принят как подходящий

Это векторизованная точечная операция, которая используется для применения оператора к массиву. Вы можете сделать это для одномерных списков в 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

Другие вопросы по теме