сортировать элементы массива Numpy по значению - PullRequest
0 голосов
/ 18 октября 2018

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

x = np.array([[1.1,2.2],[1.2,3.2]])
bins = np.array([1,2,3,4])

Тогда я хочу:

output = [[[1.1,0.0],[1.2,0.0]],[[0.0,2.2],[0.0,0.0]],[[0.0,0.0],[0.0,3.2]]]

Что у меня есть:

Z = np.shape(x)[0]
Y = np.shape(x)[1]
X = np.shape(bins)[0]-1
output = np.broadcast_to(x, (X,Y,Z))

Это создает массив, который содержиткопия оригинала для каждой корзины.Затем я решил использовать np.where, чтобы установить все значения, кроме правильных, равные 0.0, но у меня не получается, когда я пытаюсь понять, как именно это написать, и я не уверен, что это лучший способ, в частности.

Любые предложения будут оценены, спасибо.

1 Ответ

0 голосов
/ 18 октября 2018

Немного грязно, но вы можете попробовать это

outputs = np.zeros(((len(bins)-1,) + x.shape))

for bin_idx, (inf, sup) in enumerate(zip(bins[:-1:1], bins[1::1])):
    outputs[bin_idx][np.where(np.logical_and(x>inf, x<sup))] = x[np.where(np.logical_and(x>inf, x<sup))]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...