Суммирование Python - PullRequest
       18

Суммирование Python

0 голосов
/ 25 июня 2018

Я очень новый пользователь Python.
Я пытаюсь вычислить ряд суммирования.

Уравнение

У меня есть таблица со значениями (см.ниже) для a_(ij) с p = 10.

data = [["a_{ij}", "j=0", "j=1", "j=2", "j=3"],
["i=1", 4.3, 8.3, 2.9, `1.3],
["i=2", 1.4, 4.7, 6,5, 3.2]]

a_(ij)  j = 0  j = 1  j = 2  j = 3
i = 1    4.3    8.3    2.9     1.3
i = 2    1.4    4.7    6.5     3.2
.
.
i = 20   8.34   2.13  7.93   6.322

Вместо написания кода отдельно для каждого значения y.

# For i = 1
y_1 = 4.3*10**0 + 8.3*10**1 + 2.9*10**2 + 1.3*10**3

Есть ли более простой способ сэкономить время?

Ответы [ 2 ]

0 голосов
/ 25 июня 2018

Вот чистое решение:

>>> a = [
...     [4.3, 8.3, 2.9, 1.3],
...     [1.4, 4.7, 6,5, 3.2]
... ]
>>> p = 10.0
>>> import operator
>>> [sum(map(operator.mul, i, map(p.__pow__, range(len(i))))) for i in a]
[1677.3, 37648.4]

Замените zip на izip и импортируйте izip из itertools, если вы используете Python 2.7.

И вотРезультат ручного расчета вы выложили для сравнения:

>>> 4.3*10**0 + 8.3*10**1 + 2.9*10**2 + 1.3*10**3
1677.3
0 голосов
/ 25 июня 2018

Сохранить a_ (ij) как матрицу.Либо сделайте его двумерным массивом, либо используйте библиотеку numpy и сделайте его матовой матрицей.

Пример 2D-массива:

a = [[4.3, 8.3, 2.9, 1.3],
     [1.4, 4.7, 6.5, 3.2],
     # you've indicated more lines will go here
     [8.34, 2.13, 7.93, 6.322]]

Если a - это то, что можетбыть сгенерированной функцией, я бы порекомендовал генерировать ваш 2D-массив таким образом, а не вводить значения вручную.

Затем вы можете реализовать свою формулу как функцию:

def y(i):
    p = 10
    total = 0
    for j in range(1,4):
        total += a[i][j] * p**j
    return total

Теперь вы можете получить значения y для любого значения i, которое вам нравится, вызвав функцию, например, y(1) дастзначение y для i = 1.

Вы также можете сгенерировать массив для y (если вы часто используете одно и то же значение y, ваш код будет работать быстрее, если вы сохраните его в массиве вместо пересчетау каждый раз).

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