Я клянусь, что это должно быть настолько легко... Почему это нет?:(
На самом деле я хочу объединить 2 части того же массива для создания комплексного массива:
Data[:,:,:,0] , Data[:,:,:,1]
Они не работают:
x = np.complex(Data[:,:,:,0], Data[:,:,:,1])
x = complex(Data[:,:,:,0], Data[:,:,:,1])
Я пропускаю что-то? Разве numpy не нравится выполнять функции массива на комплексных числах? Вот ошибка:
TypeError: only length-1 arrays can be converted to Python scalars
Кажется, это делает то, что вы хотите:
numpy.apply_along_axis(lambda args: [complex(*args)], 3, Data)
Вот другое решение:
# The ellipsis is equivalent here to ":,:,:"...
numpy.vectorize(complex)(Data[...,0], Data[...,1])
И еще одно более простое решение:
Data[...,0] + 1j * Data[...,1]
PS : Если вы хотите сэкономить память (без промежуточного массива): приведенное ниже решение
result = 1j*Data[...,1]; result += Data[...,0]
devS также быстрое.