np.savetxt не хранит информацию о массиве - PullRequest
1 голос
/ 21 марта 2020

У меня есть следующий код:

#Time integration
T=28
AT=5/(1440)
L=T/AT
tr=np.linspace(AT,T,AT) %I set minimum_value to AT, 
to avoid a DivisionByZero Error (in function beta_cc(i))
np.savetxt('tiempo_real.csv',tr,delimiter=",")

#Parameters
fcm28=40
beta_cc=0
fcm=0
s=0

# Hardening coeficient (s)
ct=input("Cement Type (1, 2 or 3): ")
print("Cement Type: "+str(ct))
if int(ct)==1:
    s=0.2
elif int(ct)==2:
    s=0.25
elif int(ct)==3:
    s=0.38
else: print("Invalid answer")

# fcm determination
iter=1
maxiter=8065
while iter<maxiter:
    iter += 1
    beta_cc = np.exp(s*(1-(28/tr))**0.5)
    fcm = beta_cc*fcm28
np.savetxt('Fcm_Results.csv',fcm,delimiter=",")

Код выполняется без ошибок, и он создает два требуемых файла, но ни одна информация не сохраняется ни в одном.

Что бы я хотел как и np.savetxt, создать файл .CSV с результатом fcm на каждой итерации (например, массив 1: 8064)

Вместо while-l oop, которое я ранее имел попытался использовать For-l oop, но, поскольку временной шаг - это число с плавающей точкой, у меня были некоторые проблемы с ним.

Большое спасибо.

PS. Не уверен, стоит ли мне упоминать: я использовал Python3 в Ubuntu.

1 Ответ

1 голос
/ 28 марта 2020

Если у кого-то есть такая же проблема, я решил эту проблему, изменив l oop на FOR l oop, добавив итеративные значения функций (beta_ cc & fcm) в массив, и используя команда savetxt.

iteration=0
maxiteration=8064
fcmM1=[]
tiemporeal=[]
for i in range(iterat,maxiter):
def beta_cc(i):
return np.exp(s*1-(28/tr)**0.5))
def fcm(i):
return beta_cc(i)**fcm28
tr=tr+AT
fcmM1.append(fcm(i))
tiemporeal.append(tr)
np.savetxt('M1_Resultados_fcm.csv',fcmM1,delimiter=",",header="Fcm",fmt="%s")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...