【发布时间】:2020-05-19 03:20:30
【问题描述】:
我是 python 新手,正在练习 csv 数据操作。 现在我有一种情况,我有 100 * 4 个数据,其中第 i 行对应于第 i 个示例 (x_i, y_i) 第 1,2 和 3 列用于每个输入变量 (x_1, x_2, 1) abd 4 -th 列是输出 y。 然后,确定适当的常数 (a,b)(这里假设为 (6, 5))。
现在我要绘制图形,x 轴为 ax_1+bx_2,y 轴为 y。
这里是部分数据。
"x1","x2","1","y"
-0.626453810742332,-0.620366677224124,1,0.28239638205273
0.183643324222082,0.0421158731442352,1,1.73290072129656
-0.835628612410047,-0.910921648552446,1,-0.293950695808836
这是我试图完成的代码
import numpy as np
import matplotlib.pyplot as plt
if __name__ == '__main__':
x1 = []
x2 = []
y = []
a = 6
b = 5
with open('data.csv', 'r') as f:
lines = f.readlines()
tmp_x1 = np.array(lines)[:,0]
tmp_x2 = np.array(lines)[:,1]
tmp_y = np.array(lines)[:,3]
x1.append(tmp_x1)
x2.append(tmp_x2)
y.append(tmp_y)
ax1 = list()
bx2 = list()
for i in range(100):
ax1.append(a * x1)
bx2.append(b * x2)
plt.figure()
plt.xlabel('a*x1 + b*x2')
plt.ylabel('y')
plt.plot(ax1 + bx2, y)
这段代码给了我错误
IndexError: 数组索引过多
有人可以帮我解决这个问题吗?
[编辑][图表]1
代码:
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_csv('data.csv')
a,b = 6,5
df['x'] = df['x1']*a + df['x2']*b
plt.figure()
plt.plot(df['x'], df['y'])
plt.show()
【问题讨论】:
标签: python python-3.x numpy matplotlib