java布尔矩阵程序_使用布尔矩阵替换for循环以执行高级索引

当处理维度(A,B,C)的三维矩阵“M”时,可以使用具有[0,A)中的元素的2个向量X和具有相同的[0,B]中的元素的Y来索引M.尺寸D.

更具体地说,我在写作时明白

M[X,Y,:]

我们正在为D中的每个“我”,

M[X[i], Y[i], :],

从而最终产生DxC矩阵 .

Now suppose

X is a numpy array of dim U, same concept as before

this time Y is a matrix UxL, where each row correspond to a Boolean numpy array

(a mask)

并查看以下代码

for u in U:

my_matrix[Y[u], X[u], :] += 1 # Y[u] is the mask that selects specific elements of the first dimension

I would like to write the same code without the for loop. 这样的事情

np.add.at(my_matrix, (Y, X), 1) # i use numpy.ufunc.at since same elements could occur multiple times in X or Y.

不幸的是,它返回以下错误

IndexError:布尔索引与维度0的索引数组不匹配; dimension是L但相应的布尔维数是1

执行分配时也可以找到此问题

for u in U:

a_matrix[u, Y[u], :] = my_matrix[Y[u], X[u], :]

你知道如何以优雅的方式解决这个问题吗?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值