Numpy: Создание комплексного массива от 2 реальных?

Я клянусь, что это должно быть настолько легко... Почему это нет?:(

На самом деле я хочу объединить 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
55
задан PeeHaa 5 September 2012 в 14:01
поделиться

1 ответ

Кажется, это делает то, что вы хотите:

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 также быстрое.

66
ответ дан 26 November 2019 в 17:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: