Индексный массив с использованием логической маски с «трансляционным» измерением?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Индексный массив с использованием логической маски с «трансляционным» измерением?

Сообщение Anonymous »

У меня есть два массива a1 и a2 of shape m1xm2x ... xmpx3 и n1xn2x ... xnqx3 и маска m (логический массив) Shape m1xm2x ... xmpxn1xn2x ... xnq . PrettyPrint-Override ">

Код: Выделить всё

import numpy as np

np.random.seed(0)

a1 = np.random.rand(4, 5, 3)
a2 = np.random.rand(6, 3)

m = np.random.rand(4, 5, 6) >= 0.7
Я хочу, чтобы два массива b1 и b2 shape mx3 , которые содержат значения a1 и a2 , где Mask m является true.
Мое текущее способ повторить a1 и a2 arpas M1xm2x ... xmpxn1xn2x ... xnq , а затем индексировать их, используя m :

Код: Выделить всё

a1_shape, a2_shape = a1.shape[:-1], a2.shape[:-1]
t_shape = a1_shape + a2_shape + (3,)

a1 = a1[..., None, :].repeat(np.prod(a2_shape), axis=-1).reshape(t_shape)
a2 = a2[None, ..., :].repeat(np.prod(a1_shape), axis=0).reshape(t_shape)

b1, b2 = a1[m, :], a2[m, :]
Это требует создания двух огромных массивов размера m1xm2x ... xmpxn1xn2x ... xnq , которые могут быть проблематичными.
Есть ли способ получить одинаковый B1 и b2

Подробнее здесь: https://stackoverflow.com/questions/796 ... -dimension
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»