Вопрос по numpy, python – Как создать матрицу идентичности с NumPy

8

Как мне создать личностьmatrix с NumPy? Есть ли более простой синтаксис, чем

numpy.matrix(numpy.identity(n))

Ваш Ответ

3   ответа
6

np.eye может использоваться для создания массива идентификаторов (In).

Например,

>>> np.eye(2, dtype=int)
array([[1, 0],
       [0, 1]])
>>> np.eye(3, k=1)
array([[ 0.,  1.,  0.],
       [ 0.,  0.,  1.],
       [ 0.,  0.,  0.]])
Почему это понижено?
Я также хотел бы знать ...
5

Я не думаю, что естьsimpler решение. Вы можете сделать это немногоmore efficiently, хоть:

numpy.matrix(numpy.identity(n), copy=False)

Это позволяет избежать ненужного копирования данных.

@ WIM: в соответствии сdocs np.eye какnp.identity но с добавленной функциональностью. Вы можете указать размер столбца и сместить диагональ.
я никогда не использовалnp.identity, всегда использовал глаз .. вы знаете, в чем разницаnp.eye и этот?
@ Вим: нет разницы.numpy.eye() немного более гибкий. Интерфейс NumPy не очень упрощен, и существует множество функций с перекрывающимися функциональными возможностями.
13

Вот более простой синтаксис:

np.matlib.identity(n)

А вот еще более простой синтаксис, который работает намного быстрее:

In [1]: n = 1000
In [2]: timeit np.matlib.identity(n)
100 loops, best of 3: 8.78 ms per loop
In [3]: timeit np.matlib.eye(n)
1000 loops, best of 3: 695 us per loop
вам нужно использоватьmatlib? Вы не можете просто сделатьnp.eye(n)? matlib в частности, производит матрицы, в отличие от «нормального» NumPy функции, которые производят NumPy массивов.
Согласно документации, кажется, что np.eye не обязательно создает квадратные матрицы. Что касается увеличения производительности с использованием np.matlib.eye, я не уверен.

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