2016-08-28 3 views
-3

Я хочу, чтобы создать двумерный массив заданного размера, содержащий комплексные числа, как в этом примере:Сформировать двумерный массив комплексных чисел

>>> generate_array((2, 3)) 
array([[ 0.+0.j, 1.+0.j, 2.+0.j], 
     [ 0.+1.j, 1.+1.j, 2.+1.j]]) 
+1

И? Ты это пробовал? –

+1

В вашем вопросе отсутствует вопрос. –

+0

@ IgnacioVazquez-Abrams Ofcourse Я пробовал это, но я не мог решить это с помощью стандартных бесчисленных руководств, я не нашел правильную функцию/способ генерировать это, глядя на документы и не мог найти этот вопрос на Q & A сайт. – timakro

ответ

2

Вот способ для достижения этой
используя np.indices() помолвлено с np.vectorize():

def generate_array(dim): 
    X, Y = np.indices(dim) 
    return np.array(np.vectorize(complex)(X, Y)) 

ar = generate_array((2, 3)) 
print(ar) 

Выход:

[[ 0.+0.j 0.+1.j 0.+2.j] 
[ 1.+0.j 1.+1.j 1.+2.j]] 
+0

Typo: 'dim' не использовался –

+0

Спасибо! Исправленный. –

2
def generate_array(m, n): 
    return (np.arange(m) * 1j)[:, None] + np.arange(n) 


generate_array(2, 3) 
Out: 
array([[ 0.+0.j, 1.+0.j, 2.+0.j], 
     [ 0.+1.j, 1.+1.j, 2.+1.j]])