Python 如何将for循环与字典和数组同时使用

Python 如何将for循环与字典和数组同时使用,python,pandas,numpy,Python,Pandas,Numpy,我想做一个线性方程,用一些动态的输入,就像它可以 y=θ0*x0+θ1*x1 或 y=θ0*x0+θ1*x1+θ2*x2+θ3*x3+θ4*x4 为此我有 x0、x1、x2……xn的字典 θ0,θ1,θ2……θn的和数组 我是python新手,所以我尝试了这个函数,但我被卡住了 所以我的问题是,我如何写一个函数,得到x_值和θ_值作为参数,并给出y_值作为输出 X = pd.DataFrame({'x0': np.ones(6), 'x1': np.linspace(0, 5, 6)}) θ =

我想做一个线性方程,用一些动态的输入,就像它可以

y=θ0*x0+θ1*x1

y=θ0*x0+θ1*x1+θ2*x2+θ3*x3+θ4*x4

为此我有 x0、x1、x2……xn的字典 θ0,θ1,θ2……θn的和数组

我是python新手,所以我尝试了这个函数,但我被卡住了

所以我的问题是,我如何写一个函数,得到x_值和θ_值作为参数,并给出y_值作为输出

X = pd.DataFrame({'x0': np.ones(6), 'x1': np.linspace(0, 5, 6)})
θ = np.matrix('0 1')

如果你想将θ与特征列表相乘,那么从技术上讲,你可以将矩阵(特征)与向量(θ)相乘

您可以按如下方式执行此操作:

import numpy as np

x_array= x.values
theta= np.array([theta_0, theta_1])
x_array.dot(theta)
# define the theta-x mapping (theta-value per column name in x)
thetas={'x1': 1, 'x2': 3}

# create an empty result dataframe with the index of x
df_result= pd.DataFrame(index=x.index)

# assign the calculated columns in a loop
for col_name, col_series in x.iteritems():
    df_result[col_name]= col_series*thetas[col_name] 

df_result
只需按照列在x中的顺序排列θ向量。但请注意,这给出了所有is的θi*x i乘积的行和。如果你不想把它累加成行,你只需要写x_数组*θ

如果您还希望使用pandas(我不推荐使用),以实现多应用程序,并希望获得一个包含列值和相应θ乘积的数据帧,您可以按如下方式执行此操作:

import numpy as np

x_array= x.values
theta= np.array([theta_0, theta_1])
x_array.dot(theta)
# define the theta-x mapping (theta-value per column name in x)
thetas={'x1': 1, 'x2': 3}

# create an empty result dataframe with the index of x
df_result= pd.DataFrame(index=x.index)

# assign the calculated columns in a loop
for col_name, col_series in x.iteritems():
    df_result[col_name]= col_series*thetas[col_name] 

df_result
这导致:

   x1  x2
0   1   6
1  -1   3

嗨,欢迎来到苏。有一个问题,你为什么要把一面做成字典?如果您的变量以任何方式编号,您还可以通过整数索引访问第二个结构,并将值存储为列表?!我这样问是因为这样迭代就容易多了,你可以用
来表示theta,x在zip中(thetalist,xlist):…
@jottbe谢谢你的回答。我的代码中有太多东西,我不知道它到底是如何工作的,所以我无法正确地修复它。我如何将zip与X和θ一起使用,因为它们有不同的长度,例如θ只有2个数字,但如果你想一直与熊猫合作,X可以是500+(我不建议这样做),我想正确的方法是将数据帧的“列序列”乘以相应的θ值。我将在下面添加它。不要使用
np.matrix
,只使用
np.array