- 此问题在此处已有答案**:
NumPy selecting specific column index per row by using a list of indexes(7个答案)
2天前关闭。
我在Python中向量化下面的for循环时遇到了困难。
out = np.zeros((N, d))
dir_int = []
for i in range(N):
dir_int.append(np.random.randint(low=0, high = d))
out[i,dir_int[i]] = 1
#where:
# direct_int has shape (N, )
# u has shape (N, d)
# x has the same shape as u
# A has shape (2d, d) = [I,-I]^T, I the dxd identity
# b has shape (2d, )
bmAx = b - np.concatenate((x,-x), axis=1) #This is b-Ax has shape N x 2d
upper = np.copy(x)
lower = np.copy(x)
temp = np.zeros(2)
for i in range(len(dir_int)):
temp[0] = bmAx[i, dir_int[i]]
temp[1] = -bmAx[i, d + dir_int[i]]
upper[i, dir_int[i]] += np.amax(temp)
lower[i, dir_int[i]] += np.amin(temp)
对于第一个循环,dir_int
可以被创建为dir_int = np.random.randint(low=0, high = d, size = N)
,然后对于out
的每一个"行",它的一个列应该是1
;此列是dir_int[row]
。不确定如何在一行中执行此操作。
第二个循环比第一个更难。任何帮助都非常感激。
1条答案
按热度按时间x6492ojm1#
第一个循环的结果是
第二个有点难,因为
b
和x
是未定义的,我不确定我是否可视化了所需的输出,但是您应该能够使用dir_int
索引到bMax
,以便一次更新整个N
长度的列。