Пока что нет, думаю этот процесс может быть крайне долгим, учитывая текущее состояния языка и его переход активный на php 7+.
Вообще планировалось предоставить классический подход к использованию зависимостей через composer.
Работа над производительностью будет дальнейшим шагом в развитии библиотеки.
Ну, и, конечно, различные комбинации. Например: максимальное из всех чисел в матрице, меньше 6
$result = $matrix[$matrix->lt(6)]->max();
Чуть позже будет подробная запись, когда доработаю остальные методы по работе с матрицами, типа суммирование, нахождение среднего, генераторы и так далее.
Это похоже не дело принципа =) обход массива с заданным шагом — классическая задача for массива. это значительно более читабельно чем $i % 100. более того, foreach будет проходить и сравнивать каждый элемент, хотя это не оптимально, а for не тратит время на это, более того, не создаёт $value переменную каждый раз, тратя на это ресурсы.
В любом случае, $list['>0'] — малая часть возможностей библиотеки =)
Математические операции над векторами — частая задача.
В ближайших планах — быстрый и удобный способ получить среднее значение, медиану или сумму всех элементов. $list->mean() и погнал дальше.
да, ещё. булевые маски полезны в случае если нужно выбрать более гибко по индексам. К примеру из массива из 10 элементов выбрать только 1ый, 3-ий, 6-ой и 9-ый элементы.
Здесь нужно понимать, что это — отдельный тип данных, не классический массив.
И если немного расширить понятие индексации, то тут — обращение к конкретным элементам. Если так воспринимать, тогда не возникает недоразумений
Могу согласиться с тем, что такой синтаксис непривычен. Но тут, как всегда, дело контекста.
если вы работаете в проекте где все знают что используется либа numphp и мы с ней знакомы, то проблем не будет. Более того, IDE подсветит что это объект.
Опять же, если кому крайне непривычно, можно использовать явный синтаксис: $list->gt(0);
можно. но при работе в области data science, machine learning такие операции нужно делать по 100 раз в день с разными условиями и так далее. Массажирование данных, так сказать.
по сути, часть библиотеки и представляет собой отдельные методы-хелперы, которые потом можно компоновать как угодно, так как они возвращают одинаковые типы данных: np_array в данным случае.
методы all, any, кстати, в ближайших планах тоже ;)
1. это противоречит подходу, реализованному в numpy библиотеки и этому есть веская причина:
2. $list->gt(25) вернёт массив, называемый булевой маской: [false, false, true, true, false, true], где false — элемент в этой позиции НЕ удовлетворяет условию, true — удовлетворяет.
Преимущество такого подхода заключается в том, что такие булевые маски позволяют очень гибко выбрать элементы из массив и в дополнение их можно комбинировать и делать их логическое объединение:
да, спасибо большое. Это имеет место быть. В последнее время пишу на python и там другие соглашения и глаз уже радуется python-style, а php-style не нравится. НО раз это php либа — нужно следовать psr )
Совершенно верно. Особенно важно учитывать что в задачах связанных с data mining, machine learning, deep learning, такие вещи повторяюсь из раза в раз и тратить время рутинные циклические операции не стоит вообще
https://console.cloud.google.com работает по Realistic UI, по сути. Должен сказать что это по началу очень непривычно, когда система принимает мой запрос, но при этом позволяет заниматься другими делами, пока он выполняется. При этом визуально только небольшой лоадер в шапке страницы и на кнопке…
Поэтому была идея сделать аналог в базовом виде на php.
github.com/apollonin/numphp
Что б не повторяться…
Вообще планировалось предоставить классический подход к использованию зависимостей через composer.
Работа над производительностью будет дальнейшим шагом в развитии библиотеки.
Кратко:
Ну, и, конечно, различные комбинации. Например: максимальное из всех чисел в матрице, меньше 6
Чуть позже будет подробная запись, когда доработаю остальные методы по работе с матрицами, типа суммирование, нахождение среднего, генераторы и так далее.
Математические операции над векторами — частая задача.
В ближайших планах — быстрый и удобный способ получить среднее значение, медиану или сумму всех элементов. $list->mean() и погнал дальше.
$list[[false, true, false, true, false, false, true, false, false, true, false]];
И если немного расширить понятие индексации, то тут — обращение к конкретным элементам. Если так воспринимать, тогда не возникает недоразумений
если вы работаете в проекте где все знают что используется либа numphp и мы с ней знакомы, то проблем не будет. Более того, IDE подсветит что это объект.
Опять же, если кому крайне непривычно, можно использовать явный синтаксис: $list->gt(0);
методы all, any, кстати, в ближайших планах тоже ;)
1. это противоречит подходу, реализованному в numpy библиотеки и этому есть веская причина:
2. $list->gt(25) вернёт массив, называемый булевой маской: [false, false, true, true, false, true], где false — элемент в этой позиции НЕ удовлетворяет условию, true — удовлетворяет.
Преимущество такого подхода заключается в том, что такие булевые маски позволяют очень гибко выбрать элементы из массив и в дополнение их можно комбинировать и делать их логическое объединение:
к моему сожалению, в php нельзя переопределить операторы, иначе синтаксис получился бы значительно красивее:
Но вообще это синтаксический сахар для того, что бы подобные конструкции занимали меньше места и были читаемыми.