Python Расчет с использованием списка - PullRequest
1 голос
/ 25 февраля 2020

Как я могу выполнить вычисления в python, используя два списка? Где первый расчет будет, c = - (1) / cos (4), второй будет c = - (5) / cos (6), et c

import numpy as np
x, y = [1,5,2,1], [4,6,2,3]

c = []
c = -x/(np.cos(y))
print(c)

Когда я пытаюсь это сделать, я получаю сообщение об ошибке:

TypeError: bad operand type for unary -: 'list'             

Ответы [ 5 ]

4 голосов
/ 25 февраля 2020

Это можно сделать без numpy:

from math import cos
x, y = [1,5,2,1], [4,6,2,3]
c = [-i/cos(j) for i,j in zip(x,y)]
1 голос
/ 25 февраля 2020

Вы должны преобразовать список в массив numpy.

c = -np.array(x)/(np.cos(y))
print(c)

Теперь у вас будет хранилище результатов в массиве np

array([ 1.52988566, -5.20740963,  4.80599592,  1.01010867])

или, если вы хотите список снова

c = list(c)
0 голосов
/ 25 февраля 2020

Ошибка говорит вам о проблеме: TypeError: bad operand type for unary -: 'list'

Так что вы можете просто отрицать в другом месте (где у вас есть массив NumPy):

c = -x/np.cos(y)     # Error
c = x/-np.cos(y)     # [ 1.52988566 -5.20740963  4.80599592  1.01010867]
c = -(x/np.cos(y))   # [ 1.52988566 -5.20740963  4.80599592  1.01010867]
0 голосов
/ 25 февраля 2020

Надеюсь ... нет особой c причины ... обрабатывать как список.

import numpy as np
x, y = [1,5,2,1],[4,6,2,3]
c = []
for k in range (len(x)):
    c = -x[k]/(np.cos(y[k]))
    print(c)

Result:
1.5298856564663974
-5.207409632975539
4.805995923444762
1.0101086659079939
0 голосов
/ 25 февраля 2020

Вы можете перебрать всю длину списка:

import numpy as np
x, y = [1,5,2,1], [4,6,2,3]

c = []
for i in range(0, len(x)):
    f = -x[i]/(np.cos(y[i]))
    c.append(f)
print(c)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...