Проблемы с удалением подмассивов, удовлетворяющих некоторому критерию - PullRequest
0 голосов
/ 21 июня 2019

Я пытаюсь создать массив массивов, а затем удалить все вложенные массивы, которые удовлетворяют некоторому условию.Тем не менее, мой код, кажется, не делает этого, и я не уверен, почему.

import numpy as np
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt

e = np.arange(.01,1,.01)
h1 = np.arange(.01,1,.01)
h2 = np.arange(.01,1,.01)
e_given_d = np.arange(.01,1,.01)
e_h1_h2 = np.array(np.meshgrid(e,h1,h2)).T.reshape(-1,3)
e_h1_ed = np.array(np.meshgrid(e,h1,e_given_d)).T.reshape(-1,3)
e_h2_ed = np.array(np.meshgrid(e,h2,e_given_d)).T.reshape(-1,3)
h1_h2_ed = np.array(np.meshgrid(h1,h2,e_given_d)).T.reshape(-1,3)
e = np.concatenate((e_h1_h2[:,0],e_h2_ed[:,0],e_h1_ed[:,0]),axis=1).reshape(-1,1)
h1 = np.concatenate((e_h1_h2[:,1],e_h1_ed[:,1],h1_h2_ed[:,0]),axis=1).reshape(-1,1)
h2 = np.concatenate((e_h1_h2[:,2],e_h2_ed[:,1],h1_h2_ed[:,1]),axis=1).reshape(-1,1)
e_given_d = np.concatenate((e_h1_ed[:,2],e_h2_ed[:,2],h1_h2_ed[:,2]),axis=1).reshape(-1,1)
all_combos = np.hstack((e,h1,h2,e_given_d))


e = all_combos[:,0].reshape(-1,1)
h1 = all_combos[:,1].reshape(-1,1)
h2 = all_combos[:,2].reshape(-1,1)
e_given_d = all_combos[:,3].reshape(-1,1)
h2_given_e_x_e_given_d = ((.97*h2/e)*e_given_d).reshape(-1,1)


h2_given_not_e = (.03*h2/(1-e)).reshape(-1,1)


not_e_given_d = (1-e_given_d).reshape(-1,1)


max2 = np.maximum(h2_given_not_e,not_e_given_d)


ex_power_2 = (h2_given_e_x_e_given_d-max2)/(h2_given_e_x_e_given_d+max2)


h1_given_e_x_e_given_d = ((1*h1/e)*e_given_d).reshape(-1,1)


h1_given_not_e = (0*h1/(1-e)).reshape(-1,1)


max1 = np.maximum(h1_given_not_e,not_e_given_d)


ex_power_1 = (h1_given_e_x_e_given_d-max1)/(h1_given_e_x_e_given_d+max1)


initial_important_combos = np.hstack((e,h1,h2,e_given_d,ex_power_1,ex_power_2))



sufficient_combos = np.delete(initial_important_combos, np.where(e+.00001>.97),0)
sufficient_combos1 = np.delete(sufficient_combos, np.where(h1+.00001>(.97/.03)*(1-e_given_d)*(1-e)),0)


print(sufficient_combos1)

При запуске программы достаточный_комбос1 включает подмассив

[0,73 0,73 0,98 0,99 0,98 0,84422845]

Однако .73> (. 97 /.03) (1-.99) (1-0,73) =. 0873.Итак, как я понимаю код выше, этот массив должен быть удален.Что я делаю не так?

1 Ответ

0 голосов
/ 24 июня 2019

Только что решил эту проблему, проблема в том, что я использовал имена векторов, а не столбцы матриц в области действия np.where, например, 'e' необходимо заменить на initial_important_combos [:, 0].

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...