python for循环写在一行_将三个for循环写入一行(python)
我有以下程序import numpy as npX = np.asarray([ [2,3,4,5,1,1,1],[1,2,3,4,1,1,1],[3,3,3,3,1,1,1]])Nrows=X.shape[0]Ncols1=X.shape[1]cols=np.asarray( [[1,3]])Ncols2=cols.shape[1]Y = np.ndarray(shape=(Nrows,Ncol
我有以下程序import numpy as np
X = np.asarray([ [2,3,4,5,1,1,1],
[1,2,3,4,1,1,1],
[3,3,3,3,1,1,1]])
Nrows=X.shape[0]
Ncols1=X.shape[1]
cols=np.asarray( [[1,3]])
Ncols2=cols.shape[1]
Y = np.ndarray(shape=(Nrows,Ncols2))
for i in range(Nrows):
for j in range(Ncols2):
sum=0
for k in range(Ncols1):
sum=sum+np.exp(-(X[i,k]-X[i,cols[0,j])**2)
Y[i,j]=sum
我想把这三个环缩成一条线。这里的动机部分是为了加速,部分是为了练习python技能。在
所以我可以把它写成两个循环:
^{pr2}$
我可以把它写成一个循环:for i in range(Nrows):
Y[i,]=map(lambda j: np.sum(np.exp(-(X[i,]-X[i,cols[0,j]])**2)),range(Ncols2))
但我不知道怎么把这条线变成一条线。我的本能是尝试Y[:,]=map(lambda j: np.sum(np.exp(-(X[:,]-X[:,cols[0,j]])**2)),range(Ncols2))
但这失败了,因为“ValueError:操作数不能与形状(3,7)(3,)一起广播”
任何帮助都将不胜感激。在
-尼克
更多推荐
所有评论(0)