2017-02-16 12 views
-2

Я этот фрагмент кода Python ниже, где я пытаюсь вычислить ветра на основе квадратного корня формула:вычисление с плавающей точкой квадратного корня в питоне

import numpy as np 
    import sys 
    import math 

    data = np.loadtxt(array.csv, dtype='str',delimiter=',', skiprows=1, usecols=(0,1)) 

    u = data[:,6].astype(float) 
    v = data[:,7].astype(float) 
    wind=np.array([]) 

    for t in range(0,3): 
     winds=float(math.sqrt((float(u[t])*float(u[t]))+ (float(v[t])*float(v[t])))) 
     wind = np.append(wind,float(winds)) 
     print "u is ",u[t]," v is ",v[t]," wind is ",float(winds) 

CSV-файл, как показано ниже:

0.9999,0.333 
0.9566,0.13 
0.9999,0.053 

Теперь по какой-то причине, почему я пытаюсь вычислить значение ветра в коде выше я получаю только 1.

Когда я определяю массивы и и у в самом коде, как следующее:

u[0]=0.9999 
u[1]=0.9566 
u[2]=0.9999 

v[0]=0.333 
v[1]=0.13 
v[2]=0.053 

Я получаю плавающие значения для ветров. Как я могу настроить вышеуказанный код, чтобы я мог получить плавающее значение для ветров в приведенном выше коде при выводе u и v из файла csv? Файлы csv, которые я в конечном итоге использую, будут иметь в общей сложности 40 значений u и v.

+0

ваш код имеет значение SyntaxError ('IndentationError: неожиданный отступ в строке 2'). И вместо того, чтобы добавлять больше «частей» к вашему вопросу, попробуйте найти [mcve] с особым упором на ** минимальный **. Это требует, чтобы вы нашли тот шаг, который не работает должным образом (пожалуйста, также укажите, что вы ожидаете и что получите вместо этого)! – MSeifert

ответ

0

Вам не нужны все ваши float звонки там (math.sqrt всегда будет возвращать поплавок!) И вы, конечно, не нужно делать явный цикл, если вы используете NumPy:

import numpy as np 

u = np.array([0.9999, 0.9566, 0.9999]) 
v = np.array([0.333, 0.13, 0.053]) 

wind = np.hypot(u, v) # equivalent to "sqrt(u**2 + v**2)" 
wind # array([ 1.05389231, 0.96539296, 1.00130366]) 

Но с numpy вы должны быть осторожны, что dtype ваши массивы. Если вы используете целые массивы, то numpy преобразует массив, который будет сохранен в dtype массива. (например, 1.1 -> 1)

Смежные вопросы