我有两个numpy数组,我可以通过添加这两个数组来获得所有的组合,这两个数组中的行都没有剩余的零,但是在这样做的同时,我丢失了数组的原始组成部分,我不知道数组如何检索到这条信息。请看下面我的代码:
x = np.array([[1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0],
[0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0],
[0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0],
[0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0],
[0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0],
[0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0],
[0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0],
[0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1]])
y= np.array([[1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0],
[0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0],
[0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0],
[0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1]])
x = np.expand_dims(x, 1)
combos = (x + y).reshape(-1, 12).astype("int")
mask = np.any(np.equal(combos, 0), axis=1)
combos=combos[~mask]
print("combos:",combos)
# Prints
combos: [[1 1 1 2 2 2 2 2 1 1 1 1]
[1 1 1 1 2 2 2 2 2 1 1 1]
[1 1 1 2 2 2 2 2 2 1 1 1]
[1 1 1 2 2 2 2 2 2 1 1 1]]
现在,根据上面的结果,我需要知道创建组合的x和y的行值是多少,例如第一行:
组合[0]=[1,1,1,2,2,2,2,2,1,1,1]
X=[1,1,1,1,1,1,1,1,1,0,0,0,0]
Y=[0,0,0,1,1,1,1,1,1,1,1,1,1]
虽然你可以尝试从和中重建组合,但在总结组合的同时记下它们肯定更好。而不是
你可以这样做:
(生成的字典将和作为键,将组合集作为值,所有这些都是元组形式。当然,也可以存储x和y的索引,以节省空间,我强烈建议您这样做。)
如果
(x+y)
不是平坦的,可能会有所帮助。然后掩码显示True,其中x和y索引生成非零行。你知道吗生成x,y索引完全不为零的掩码。你知道吗
x_ix和y_ix数组标识产生所需结果的索引组合。你知道吗
这也许不能给出你所需要的,但可能指向一个解决方案。你知道吗
相关问题 更多 >
编程相关推荐