列表理解的逻辑索引
Logical indexing with list comprehensions
我目前的代码如下:
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 来创建另一个 一维数组,你丢失了原始ndarray的索引信息。因此,对于 list comprehension,您可能需要对新创建的一维数组和原始 ndarray[=26] 进行 enumerate =]同时。
我目前的代码如下:
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 来创建另一个 一维数组,你丢失了原始ndarray的索引信息。因此,对于 list comprehension,您可能需要对新创建的一维数组和原始 ndarray[=26] 进行 enumerate =]同时。