Я пытаюсь воссоздать в Kotlin то, что верю возможно в Pandas/Python. Я хотел бы выполнить деление так, чтобы число (Int, Double и т.д.) было разделено числовым вектором. (Мне сказали, что это возможно, но я не нашел ссылки.) Один пример, который я видел, был частью расчета скорости роста.
1.0 / data1['nYears']
Здесь 1,0 делится на каждое значение в data1['nYears'], и возвращается столбец, содержащий поэлементный результат. Например, если столбец содержит 2 и 4, результатом будет новый столбец, содержащий 0,5 и 0,25.
Можно ли это сделать в Котлине?
(FWIW, обратные вычисления (деление столбца на скалярную константу), возможно, более важны, но я решил начать здесь.)
я нашел частичное решение в этом, используя перегрузку оператора с функцией расширения:
operator fun Int.div(vector: Vector<Int>) : Vector<Double> {
val result = Vector("", ArrayList<Double?>())
for (e in vector) {
if (e == null) {
result.add(null)
} else {
result.add(this / (e * 1.0))
}
}
return result
}
Это прекрасно работает для целых чисел, но когда я попытался расширить его на другие числовые типы, я столкнулся с проблемой. Например, добавляя аналогичный метод для двойников, я получил ошибку, я полагаю, что это вызвано стиранием типа.
Platform declaration clash: The following declarations have the same JVM signature...
Затем я попытался предоставить один метод с аргументом (Vector ), чтобы покрыть оба случая, но получил
None of the following functions can be called with the arguments supplied
Есть ли способ сделать это в Котлине?