我的代码目前如下:

z = np.diagflat(c).dot(D).dot(x);
idxN, idxP = z<0, z>=0 # logical indexing
y1 = [-1 + np.exp(x)/(1+np.exp(x)) for x in z[idxN]]
y1 = np.array(y1) # Size (504,)
y2 = [-np.exp(-x)/(1+np.exp(-x)) for x in z[idxP]]
y2 = np.array(y2) # Size (496,)


现在,我试图形成一个(1000,)列表y,该列表将根据索引是否为+/-合并y1或y2。

我猜想列表理解将是最简单的,但是我在表格上苦苦挣扎。感谢您的投入。

最佳答案

最简单的方法应该是使用索引重新设置值,然后根据需要将其展平:

z_out = np.empty(z.shape, dtype='float')
z_out[idxN] = y1                           # values for negative indices
z_out[idxP] = y2                           # values for positive indices

z_out.flatten()                            # flatten it to 1D array, if required


PS:当对一个ndarray进行子集创建另一个1D数组时,您将失去原始ndarray的索引信息。因此,对于列表理解,您可能需要同时枚举新创建的1D数组和原始ndarray。

10-05 21:15
查看更多