У меня есть список сфер с некоторыми известными характеристиками (идентификаторы, радиусы, массы и позиции) с идентификаторами , радиусами и массами , являющимися 1D массивы с формой (511,) и положениями является 3D массив с формой (511, 3) внутри некоторого большого сферического объема с известным центром, ( 0, 0, 0) и радиус, distance_max .
hal_ids_data = np.array([19895, 19896, ..., 24249])
hal_radiuss_data = np.array([1.047, 1.078, ..., 3.263])
hal_masss_data = np.array([2.427e+06, 8.268e+06, ..., 8.954e+07]
hal_positions_data = np.array([np.array([-33.78, 10.4, 33.83]), np.array([-33.61, 6.34, 35.64]), ..., np.array([-0.4014, 4.121, 33.05])])
Я хотел бы случайным образом разместить эти крошечные сферы по всему объему внутри большой сферы, сохраняя их индивидуальные характеристики неповрежденные, что означает, что необходимо перемешать только их позиции с учетом двух ограничений, показанных ниже .
for hal_id, hal_position, hal_radius, hal_mass in zip(hal_ids_data, hal_positions_data, hal_radiuss_data, hal_masss_data):
# check if 1) any one of the small spheres are above some mass threshold AND 2) inside the big sphere
if ((np.sqrt(pow(hal_position[0], 2)+pow(hal_position[1], 2)+pow(hal_position[2], 2)) < distance_max) and (log10(hal_mass)>=1e8)):
# if so, then do the following stuff down here but to the shuffled populations of small spheres meeting the conditions above rather than to the original population
Какой самый быстрый и кратчайший способ перемешать мои сферы под последним if statement
прежде чем что-то с ними делать ? (Мне действительно нужна информация о моем первоначальном населении для дальнейшего использования, поэтому я не могу ее игнорировать)