как подать заявку на L OOP для двух разных данных - PullRequest
0 голосов
/ 27 февраля 2020

Это мои данные

data1 = [0, 1.12, 0.96]
data2 = [0.96, 0, 0]
data3 = [0, 1.2, 1.28]

length_T_bd = 220 #Newton
length_T_be = 250 #Newton
length_r_bd = 0
r_d = np.array(data1)
r_b = np.array(data2)
r_e = np.array(data3)

расчеты

r_bd = r_b - r_d
r_be = r_b - r_e

for value in r_bd:
    length_r_bd += value ** 2
    length_r_bd = np.sqrt(length_r_bd)
    u_bd = r_bd / length_r_bd
    T_bd = length_T_bd * u_bd

Я могу получить T_bd, как видно выше. Кроме того, я хочу получить T_be по той же процедуре. Однако мне нужно использовать FOR L OOP два раза, чтобы сделать это.

Есть ли возможность сделать это более разумно.

Ответы [ 2 ]

0 голосов
/ 27 февраля 2020

Похоже, вы хотите применить одну и ту же обработку ко многим различным входам. Здесь вам нужна функция. Также кажется, что вы перезаписали ряд своих переменных так:

def do_calc(ar, length_T):
    length_r = np.sqrt(ar ** 2) # This is where the 'iteration' happens
    u = ar / length_r
    T = length_T * u
    return T

T_bd = do_cal(r_bd, length_T_bd)
T_be = do_cal(r_be, lenght_T_be)
0 голосов
/ 27 февраля 2020

Это работает, только если r_bd и r_be имеют одинаковую длину:

r_bd = r_b - r_d
r_be = r_b - r_e

for value_bd, value_be in zip(r_bd, r_be):
  length_r_bd += value_bd ** 2
  length_r_bd = np.sqrt(length_r_bd)
  u_bd = r_bd / length_r_bd
  T_bd = length_T_bd * u_bd

  length_r_be += value_be ** 2
  length_r_be = np.sqrt(length_r_be)
  u_be = r_be / length_r_be
  T_be = length_T_be * u_be
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...