Прямо сейчас у вас есть массив целых чисел. Это будет трудно или невозможно преобразовать в любой сложный тип на месте. Самое простое решение -
Z = Z[:, 0] + Z[:, 1] * 1j
Это уменьшит исходное измерение. Вы можете сохранить его, используя ломтики, как @ SayandipDutta предлагает , или изменить его на нужный вам размер:
Z = (Z[:, 0] + Z[:, 1] * 1j).reshape(-1, 1)
Решение, более соответствующее тому, что вы пытались, было бы возможно, если бы у вас былоначалось с массива чисел типа
Z = np.array([[1., 2.], [3., 4.], [5., 6.]])
или
Z = np.array([[1, 2], [3, 4], [5, 6]], dtype=float)
Теперь вы можете просматривать данные как np.complex
, основываясь на достаточно безопасном предположении, что массивы расположены в порядке C:
Z.view(dtype=np.complex)
Это сохранит форму оригинала. При желании вы можете уменьшить размерность с помощью
np.sqeeze(Z.view(dtype=np.complex))
или просто
Z.view(dtype=np.complex).reshape(-1)