#java #numpy #multidimensional-array #nd4j
#java #numpy #многомерный массив #nd4j
Вопрос:
Я создаю эквивалентную библиотеку numpy, такую как nd4j, на Java, но я хочу реализовать ее сам. Однако я не могу найти в Интернете никаких ресурсов, которые помогли бы моему исследованию. Я надеюсь поддерживать базовые функции numpy, такие как randn и произведение формы и точки
Я создал класс barebones Matrix, но уже столкнулся с проблемой. Для определения матрицы используются общие термины, но я должен использовать класс Object для хранения n-мерной матрицы.
public class Matrix<T> {
Object values;
int size;
Matrix() {
}
Matrix(int[] shape) {
size = shape.length;
}
Matrix(Object values) {
this.values = values;
}
}
Библиотека должна выполнять матричные операции, подобные синтаксисам numpy, таким как
Matrix<int> m = new Matrix<T>([100,100]);
m=m*m;
m ;
m =10;
m = m m;
m = m^2
m = np.dot(m,m)
Я конвертирую файлы java в kotlin, поскольку kotlin поддерживает перегрузку операторов
Комментарии:
1. почему «нужно использовать класс Object»? почему бы и нет
T
?2. это
new Matrix<T>([100,100])
не компилируется (в Java)3. Кажется, вы начинаете с Java, я полагаю, с другого языка. Я бы рекомендовал пройти курс Java. Когда вы дойдете до части, посвященной обобщениям, вы наверняка сможете ответить на свой текущий вопрос.
4. Я знаю, что могу объявить массив типа T подобным образом
T[] array
, но я хочу, чтобы мой класс поддерживал массивы с несколькими измерениями, такими как 1D, 2D или 3D. Если я использую объявление, подобное приведенному выше, массив будет иметь фиксированные размеры.