Я пытаюсь найти эффективный способ преобразования массива следующим образом:
Каждый элемент будет преобразован в None, вещественное число или кортеж / список / массив размером 2 (содержащие действительные числа).
Функция преобразования, которую я использую, проста и выполняет только сравнения чисел. Поэтому моя первая мысль - использовать np.where для быстрых сравнений. Теперь, если преобразование None или действительное число, у меня нет проблем.
Но, когда преобразование является кортежом / списком / массивом, np.where дает мне ошибки. Это часто происходит, потому что массивы numpy требуют регулярности измерений. Так что теперь я вынужден работать со списками ...
Так что моя идея теперь состоит в том, чтобы вместо преобразования элемента в кортеж / список / массив размером 2 я преобразовал его в комплексное число. Но тогда у меня есть массив комплексных чисел, содержащий в основном числа с 0 мнимой частью (так как большинство преобразований будут None или действительными числами). Я не могу себе этого позволить, говоря по памяти. (Или?)
Когда у меня будет список преобразований / Array / что угодно, я буду снова выполнять операции со знаками и арифметику между его элементами и сравнениями, поэтому я бы хотел, чтобы это был массив Array.
Я вынужден работать со списками в этом сценарии, или вы делаете что-то еще?
EDIT:
Меня просят привести некоторые примеры моей трансформации:
Входные данные: массив, содержащий элементы со значениями Нет или действительные числа от [0,360)
Преобразование: (упрощенно):
Ни один не переходит в Ни один
Элемент
в [0,45) переходит к 2 действительным числам (слева, справа), скажем, к 2 случайным действительным числам от 0 до элемента.
элемент в [45,360) переходит в 1 вещественное число
что я делаю, например:
arrayTransformed = np.where((array>=0) & (array<45), transform(array), array)
#this gives problems ofc
arrayTransformed = np.where((array>=45) & (array<=360), transform(array), arrayTransformed )