Как суммировать значения в массиве внутри цикла - PullRequest
1 голос
/ 26 марта 2020

Итак, у меня есть массив значений x и y, и я нанес их на график друг против друга.

Но как я могу отобразить значения x по сумме значений y до каждого значения x?

Я знаю, что, вероятно, следует использовать for l oop, но после что я борюсь Пожалуйста, посмотрите мою попытку ниже.

import numpy as np

a = np.array([[1,1],[2,0],[3,0],[4,1],[5,4],[6,7],[7,5],[8,1],[9,2],[10,3], 
[11,10],[12,9],[13,27],[14,20],[15,39],[16,40],[17,54],[18,69],[19,74], 
[20,191],[21,126],[22,102],[23,121],[24,219],[25,204], [26,235]])

X = a[:,0]
Y = a[:,1]

plt.scatter(X,Y)
plt.show()

z = 0
for y in Y and x in range(1, 27):
    z += y
    plt.scatter(x,z)
    plt.show()

Ответы [ 2 ]

3 голосов
/ 26 марта 2020

имеет хороший метод накопленной суммы. Попробуйте следующее:

import numpy as np

'''
...initial data...

'''

plt.scatter(X,Y, label = 'X vs Y')
cumulative_sum = np.cumsum(Y)

plt.scatter(X,cumulative_sum, label = 'X vs Cumulative Sum')
plt.legend()
plt.show()
0 голосов
/ 26 марта 2020

Одна вещь, которую вы ошибаетесь, я уверен, что вы не можете l oop через два массива одновременно for y in Y and x in range(1, 27):

Вы должны l oop через один, вы можете Сделайте это, просматривая индексы массива вместо того, чтобы проходить по самому массиву.

for y in range(0,26):
    x = y + 1
    z += Y[y]
    ...

Другая проблема, с которой вы столкнулись, заключается в том, что вы фактически создаете новый граф для каждого раза, когда код в Вы для l oop, каждый из этих графиков имеет только одну точку. Это два графика, построенных, когда ваш для l oop начинает работать правильно, обратите внимание, как меняются значения по осям x и y.

enter image description here enter image description here

Вам нужно сохранить каждое значение z в другом массиве, а затем распечатать один график с использованием этого массива после того, как ваш для l oop завершится (значение для l oop немного изменится, потому что вам не нужны и у, и х)

import numpy as np
import matplotlib.pyplot as plt

a = np.array([[1,1],[2,0],[3,0],[4,1],[5,4],[6,7],[7,5],[8,1],[9,2],[10,3],
[11,10],[12,9],[13,27],[14,20],[15,39],[16,40],[17,54],[18,69],[19,74],
[20,191],[21,126],[22,102],[23,121],[24,219],[25,204], [26,235]])

X = a[:,0]
Y = a[:,1]

plt.scatter(X,Y)
plt.show()


#""""""""""""""""""""""""THE CHANGED PART"""""""""""""""""""""""""""""""""""


Z = np.zeros(26)
sum = 0
for y in range(0, 26):
    sum += Y\[y\]
    Z\[y\] = sum
plt.scatter(X,Z)
plt.show()][3]][3]


#""""""""""""""""""""""""THE CHANGED PART"""""""""""""""""""""""""""""""""""

Создает график ниже

enter image description here

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