Diff массивов, случайный выбор, конвертация в булев массив и произвольные заполнители в numpy

Теги:

Difference between two numpy arrays in python

Разницу между двумя массивами numpy можно получить непосредственно

import numpy as np

array1=numpy.array([1.1, 2.2, 3.3])
array2=numpy.array([1, 2, 3])
diffs = array1 - array2
>>> array([ 0.1,  0.2,  0.3])

Или так

result = np.subtract([1.1, 2.2, 3.3], [1, 2, 3])

Массивы могут быть разных шейпов, но должны быть транслиремы в общую для них шейп.

How to set elements in numpy array randomly

Часто бывает необходимо изменить случайный элемент массива. Можно так:

myarray = np.random.random_integers(0, 10, size=10)
indices = np.random.choice(np.arange(myarray.size), replace=False,
                           size=int(myarray.size * 0.2))
myarray[indices] = 42

В данном случае мы получаем случайный индекс и уже по индексу изменяем значение. numpy.random.choice получает на вход последовательность, из которой будет производиться случайный выбор. Мы можем задать размерность выхода и вероятность, с которой бьудет производиться выбор. Размерность последовательности. задающей вероятность, должна соответствовать размерности последовательности, из которой будет выполнен выбор. Если вероятность не задана - используется равномерное распеределение. Еще смотри тут: [random-choice]

Случайный инт или последовательность можно получить через numpy.random.randint

Раздел документации numpy, посвященный random sampling

How convert a numpy array into a boolean array

new_array = np.array(old_array, dtype=bool)

или

new_array = old_array.astype(dtype=bool)

Как создать массив с заполнением произвольным значением

numpy.full

np.full((2, 2), np.inf)
>>> array([[inf, inf], [inf, inf]])

Если нужно получить такой же массив, только с новым заполнителем, то numpy.full_like. При этом учитывается тип исходного массива.

x = np.arange(6, dtype=int)
np.full_like(x, 0.1)
>>> array([0, 0, 0, 0, 0, 0])

[numpy]