Прежде всего, я прошу прощения за то, что был абсолютным новичком и в питоне, и в numpy.Пожалуйста, прости мое невежество.
У меня есть 4-мерный куб измерений давления, где размеры (количество образцов, время, ось Y, ось X), что означает, что для каждого образца у меня есть 3Dкуб пространственно-временного профиля.Мне нужно собрать показания давления этого трехмерного куба (время, ось Y, ось X) и сохранить его в массив для каждого образца только там, где координаты удовлетворяют определенному условию.При изменении конкретного условия размер этого массива также будет меняться.Итак, я должен использовать append () для создания этого массива.Однако, поскольку, скажем, для 1000 выборок, мне приходится искать более миллиона координат с использованием For-Loop для каждой выборки, написанный мною код довольно неэффективен и требует много времени для запуска (более нескольких часов).Можете ли вы помочь мне написать это более эффективно?
Ниже приведен код, который я пытался решить проблему.Это работает хорошо и дает ожидаемый результат, но это очень медленно.
import numpy as np
# Number of sample points in x,y and t-axis
Nx = 101
Ny = 101
Nt = 100
n_train = 1000
target_array = []
for i_train in range (n_train):
for k in range (Nt):
for j in range (Ny):
for i in range (Nx):
if np.round(np.sqrt((i-np.round(Nx/2))**2+(j-np.round(Ny/2))**2)) == 2*k:
target_array.append(Pressure[i_train,k,j,i])