python - 一个非常大的数组的行的笛卡尔积
问题描述
我有一个大小为(100, 50)的数组。我需要生成一个输出数组,它表示输入数组行的笛卡尔积。
为简化起见,让我们有一个输入数组:
array([[2, 6, 5],
[7, 3, 6]])
作为输出,我想要:
array([[2, 7],
[2, 3],
[2, 6],
[6, 7],
[6, 3],
[6, 6],
[5, 7],
[5, 3],
[5, 6]])
注意:由于输入向量的大小,itertools.product 在这里不起作用。还有所有其他类似的答案,假设行数小于 32,这里不是这种情况
解决方案
这个问题已经被问过很多次了,例如这里。
大小为 (100, 50) 的数组太大,numpy 无法处理。但是,可以解决较小的数组大小。无论如何,我更喜欢使用itertools
这种东西:
import itertools
a = np.array([[2, 6, 5], [7, 3, 6]])
np.array(list(itertools.product(*a)))
array([[2, 7],
[2, 3],
[2, 6],
[6, 7],
[6, 3],
[6, 6],
[5, 7],
[5, 3],
[5, 6]])
推荐阅读
- google-app-engine - 为什么没有流量时没有关闭空闲实例?
- intellij-idea - PsiElement 上的 getReference() 始终返回空值
- php - MySQL 语句在 PHP 中不起作用,但在 MySQL Workbench 中运行良好
- c# - 关闭应用程序时的 UWP 进程内后台任务
- javascript - dbms_crypto 和 CryptoJS.HmacSHA256 返回不同的输出
- java - 用于异型 json Java 的 Json 反序列化
- php - 将php转换为bash脚本?
- azure-devops - 如何在 Azure-devops-extension 开发中读取外部 json 文件?
- google-cloud-platform - GCP Data Fusion 多表导入
- reactjs - 在映射 ReactJS 中显示/隐藏 div