基于列表理解的逻辑索引

2024-09-30 00:36:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我的代码目前如下:

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,)listy,它将根据索引是+/-合并y1还是y2。在

我猜列表理解是最简单的,但我在表单上挣扎。谢谢你的意见。在


Tags: 代码inforsizenparraydotlogical
1条回答
网友
1楼 · 发布于 2024-09-30 00:36:07

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

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数组时,您将丢失原始数组的索引信息。因此,对于列表理解,您可能需要同时在新创建的1D数组和原始的ndarray上枚举。在

相关问题 更多 >

    热门问题