Установка многомерного массива numpy по определенным индексам, равным 1D-массивуPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Установка многомерного массива numpy по определенным индексам, равным 1D-массиву

Сообщение Anonymous »

У меня есть коллекция симметричных тензоров full_tensors, и я вычислил все отдельные элементы в двумерном массиве tensor_reduced. Я хочу вычислить полные full_tensors из отдельных элементов tensor_reduced. У меня есть список all_permutations_list, который содержит кортежи по всем индексам, которые должны иметь одинаковое значение (например, all_permutations_list[1]=((0, 0, 1, 0, 0, 0), (0, 1, 0, 0, 0, 0), (1, 0, 0, 0, 0, 0), (0, 0, 0, 1, 0, 0), (0, 0, 0, 0, 1, 0), ( 0, 0, 0, 0, 0, 1)), и мы имеем, что tensor_reduced.shape[1] совпадает с len(all_permutations_list).
Следующий код делает то, что я хочу:
def makeFulltensor(tensor_reduced,all_permutations_list,dim=4):
full_tensors=np.zeros((tensor_reduced.shape[0],dim,dim,dim,dim,dim,dim),dtype=tensor_reduced.dtype)
for index,all_permutations in enumerate(all_permutations_list):
for perm in (all_permutations):
full_tensors[:,perm[0],perm[1],perm[2],perm[3],perm[4],perm[5]]=tensor_reduced[:,index]
return full_tensors

Я хотел бы ускорить его, используя функции индексирования numpy, чтобы избежать внутреннего (и, возможно, внешнего) цикла for. Кто-нибудь знает эффективный способ сделать это?
Спасибо!
PS: all_permutations_list рассчитывался следующим образом:
from itertools import permutations
from itertools import combinations_with_replacement as cwr
all_permutations_list=[]
reduced_indices=list(cwr(range(4), 6))
for index,(i,j,k,l,m,n) in enumerate(reduced_indices):
all_permutations=set(permutations([i,j,k,l,m,n]))
all_permutations_list.append(all_permutations)
all_permutations_list=[tuple(x) for x in all_permutations_list]


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

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Вычисляйте массив numpy только по определенным индексам, заданным маской
    Anonymous » » в форуме Python
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • Объединить 2 массива по определенным индексам в Javascript
    Гость » » в форуме Javascript
    0 Ответы
    35 Просмотры
    Последнее сообщение Гость
  • Объединить 2 массива по определенным индексам в Javascript
    Гость » » в форуме Javascript
    0 Ответы
    17 Просмотры
    Последнее сообщение Гость
  • Объединить 2 массива по определенным индексам в Javascript
    Anonymous » » в форуме Javascript
    0 Ответы
    24 Просмотры
    Последнее сообщение Anonymous
  • Есть ли разница между нулевым значением, не равным значению, и значением, не равным нулю в Java?
    Anonymous » » в форуме JAVA
    0 Ответы
    55 Просмотры
    Последнее сообщение Anonymous

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