python - 将 2d numpy 数组与其自身进行比较以形成 3d 数组

标签 python numpy

我有一个像这样的简单的二维 numpy 数组

array([[1, 0, 1],
       [1, 1, 0],
       [0, 1, 1],
       [0, 0, 0],
       [1, 0, 0]])

我想做的是将数组的每一行自身相乘以形成一个 3d 数组,(这样 1*1 = 1 和其他任何内容都将是 0,本质上是一个 and 函数):

array([[[1,0,1],[1,0,0],[0,0,1],[0,0,0],[1,0,0]],
       [[1,0,0],[1,1,0],[0,1,0],[0,0,0],[1,0,0]],
       ...,
       ...,
       ...])

最佳答案

事实证明答案非常简单。如果数组是x:

x[np.newaxis,:,:]*x[:,np.newaxis,:]

这适用于逻辑表达式等内容,如果您只想比较每行中的相同元素,您可以执行以下操作:

np.logical_not(np.logical_xor(x[np.newaxis,:,:], x[:,np.newaxis,:]))

这将返回:

array([[[ True,  True,  True],
        [ True, False, False],
        [False, False,  True],
        [False,  True, False],
        [ True,  True, False]],

       [[ True, False, False],
        [ True,  True,  True],
        [False,  True, False],
        [False, False,  True],
        [ True, False,  True]],

       ...,
       ...,
       ...], dtype=bool)

关于python - 将 2d numpy 数组与其自身进行比较以形成 3d 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32107837/

相关文章:

python - 生成具有特定比例的 0 和 1 的随机数组

python - 使用pydot在Graphviz中垂直放置节点

python - 将元组列表格式化并打印为一行

python - 在具有相互依赖值的矩阵中向量化计算

python - 找到一个数组大于第二个数组中元素的索引

python - numpy 将向量转换为二进制矩阵

python - 为什么 Numpy 在按度排序多项式系数时不一致?

Python 单元测试模块抛出 "ModuleNotFoundError: No module named ' tests.test_file'"

python - 如何在 Python 中使用 pyodbc 通过 IP 地址连接到 sql server 2008

python - 如何检测子列表中的逻辑和字符串索引并将其删除