У меня есть сложная функция, которая принимает два аргумента x и y и возвращает целое значение i.Информация i сохраняется в массиве FF с формой (200 200).Значения Элемента i в FF находятся в диапазоне от 0 до 39999 и не назначаются дважды во всем массиве.Array FF рассчитывается заранее и существует при создании Array SF.(см. ниже) Дополнительная информация: комплексная функция вычисляет позицию бита в матрице NxN qrcode, которая может быть предварительно рассчитана для каждой версии qrcode и ecc
Вторая функция,который создает одномерный массив SF булевых значений с функцией SF [i], поэтому он имеет форму (40000,).Массив создается с помощью
SF = numpy.fromfunction((lambda i: ((data[i >> 3] >> 7 - (i & 7)) & 1 != 0)), (40000,))
, где data [] - это массив с байтами. (Дополнительная информация: функция оценивает каждый бит каждого байта как true или false.)
Важно знать: FF [x] [y] = i описываетположение нужной информации в массиве SF.
Моя проблема
Существует ли встроенная функция NASTPY FAST (или последовательное применение функций NUMPY), которая может(БЕЗ медленной итерации Python, перечисления или циклов) объединить два массива FF и SF, чтобы целевой массив TARGET создавался (как SF [(FF [x] [y])]]) сразу?
import numpy as np
FF = np.arange(40000)
np.random.shuffle(FF)
# FF = FF.reshape((200, 200)) # Only to understand 200x200 = 40000
FF = FF.reshape((40000,))
SF = np.random.choice(2, size=40000).astype(bool) # Create Array with random boolean
TARGET = np.zeros((40000,), dtype=bool) # Create Target array
for index in range(40000): # This for should be replaced with numpy to create TARGET
pos_in_SF_array = FF[index] # get position in Second array out of First array at position 0..39999
value_true_false_at_pos = SF[pos_in_SF_array] # get True or False at the desired position
TARGET[index] = value_true_false_at_pos # Write it at the position index from TARGET
print("Example for take pos in first array and address the value of second array:")
print("Then write the True false in the Target array")
print(FF[12345])
print(SF[FF[12345]])
TARGET[12345] = SF[FF[12345]] # Assign the Value
TARGET = TARGET.reshape(200, 200) # Reshape it in the same manner as FF
print(TARGET)