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)
Как создать массив с заполнением произвольным значением
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]