itertools.product 用于所有列
itertools.product for the full range of columns
作为我代码的一部分,我正在尝试获得一个完整的阶乘矩阵,这不是问题,因为我已经有了它的工作代码。但是,我想以一种与输入数量无关的方式对其进行概括。这将需要修改行:
for combination in itertools.product(X[0,:],X[1,:],X[2,:],X[3,:],X[4,:],X[5,:],X[6,:]):
input_list = dfraw.columns[0:n_inputs]
output_list = dfraw.columns[n_inputs:len(dfraw.columns)]
fflvls = 4
lhspoints = 60000
X = np.zeros((n_inputs, fflvls),float)
ii=0
for entrada in input_list:
X[ii] = np.linspace(min(dfraw[entrada]), max(dfraw[entrada]), fflvls)
ii+=1
number=1
i=0
X_fact=np.zeros((int(fflvls**n_inputs),n_inputs),float)
for combination in itertools.product(X[0,:],X[1,:],X[2,:],X[3,:],X[4,:],X[5,:],X[6,:]):
X_fact[i,:] = (combination)
i +=1
number+=1
我想过将 itertools.product 的输入写成带循环的字符串然后求值,但它不起作用,我也看到它被认为是不好的做法
prodstring = ['X[0,:]']
for ii in range(n_inputs):
prodstring.append(',X[%d,:]'%(ii))
in_products = ''.join(prodstring)
for combination in itertools.product(eval(in_products)):
X_fact[i,:] = (combination)
i +=1
number+=1
还有什么其他方法可以在这个函数中输入所有列? (或类似的)
谁说越努力越好?我吃完午饭回来,我深入研究了 *args 和 **kwargs 作为拖延的一种形式,因为我有时看到他们被提到,我很好奇。它似乎正是我需要的工具。如果这对以后像我这样的其他代码菜鸟有帮助:
args = ()
for ii in range(n_inputs):
b = (X[ii,:])
args += (b,)
for combination in itertools.product(*args):
X_fact[i,:] = (combination)
i +=1
number+=1
似乎工作正常。在一个小时的“不工作”中解决了我在大约 4 小时的“工作”中没有解决的问题
作为我代码的一部分,我正在尝试获得一个完整的阶乘矩阵,这不是问题,因为我已经有了它的工作代码。但是,我想以一种与输入数量无关的方式对其进行概括。这将需要修改行:
for combination in itertools.product(X[0,:],X[1,:],X[2,:],X[3,:],X[4,:],X[5,:],X[6,:]):
input_list = dfraw.columns[0:n_inputs]
output_list = dfraw.columns[n_inputs:len(dfraw.columns)]
fflvls = 4
lhspoints = 60000
X = np.zeros((n_inputs, fflvls),float)
ii=0
for entrada in input_list:
X[ii] = np.linspace(min(dfraw[entrada]), max(dfraw[entrada]), fflvls)
ii+=1
number=1
i=0
X_fact=np.zeros((int(fflvls**n_inputs),n_inputs),float)
for combination in itertools.product(X[0,:],X[1,:],X[2,:],X[3,:],X[4,:],X[5,:],X[6,:]):
X_fact[i,:] = (combination)
i +=1
number+=1
我想过将 itertools.product 的输入写成带循环的字符串然后求值,但它不起作用,我也看到它被认为是不好的做法
prodstring = ['X[0,:]']
for ii in range(n_inputs):
prodstring.append(',X[%d,:]'%(ii))
in_products = ''.join(prodstring)
for combination in itertools.product(eval(in_products)):
X_fact[i,:] = (combination)
i +=1
number+=1
还有什么其他方法可以在这个函数中输入所有列? (或类似的)
谁说越努力越好?我吃完午饭回来,我深入研究了 *args 和 **kwargs 作为拖延的一种形式,因为我有时看到他们被提到,我很好奇。它似乎正是我需要的工具。如果这对以后像我这样的其他代码菜鸟有帮助:
args = ()
for ii in range(n_inputs):
b = (X[ii,:])
args += (b,)
for combination in itertools.product(*args):
X_fact[i,:] = (combination)
i +=1
number+=1
似乎工作正常。在一个小时的“不工作”中解决了我在大约 4 小时的“工作”中没有解决的问题