将单元格分为两个和,并形成np.array

如何解决将单元格分为两个和,并形成np.array

list(itertools.product([[True,False],[False,True]],repeat=2))

上面的命令产生下面的输出

[((True,False),(True,False)),((True,(False,True)),((False,True),True))]

但是我希望它看起来像这样:

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

任何事情都会帮忙!

解决方法

首先生成您的产品:

pr = list(itertools.product([[True,False],[False,True]],repeat=2))

然后将其转换为 Numpy 数组,并进行适当的重塑:

a = np.array(pr).reshape((len(pr),-1))

结果是:

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

此代码还适用于 repeat 的其他值(例如,检查是否为 repeat = 3 )。

关于其他解决方案的评论:除 mathfux 以外的所有解决方案, 生成普通的 pythonic 列表,而不是 Numpy 数组(当您 指定)。

,

产品列表的值是元组。

您可以遍历产品列表的元组,

每次将每个列表的元组连接到一个新列表:

例如

([True,[True,False]) -> [True,False]

选项1

import itertools

x = list(itertools.product([[True,repeat=2))

x = [list(v[0] + v[1]) for v in x]

# [[True,True]]
print(x)

选项2:一支衬里

import itertools

x = [list(v[0] + v[1]) for v in list(itertools.product([[True,repeat=2))]

# [[True,True]]
print(x)
,

numpy中,您需要更改其形状:

X = [((True,False),(True,False)),((True,(False,True)),((False,True),True))]
np.array(X).reshape(4,4)
[[ True False  True False]
 [ True False False  True]
 [False  True  True False]
 [False  True False  True]]
,
out = [[*a,*b] for a,b in itertools.product([[True,repeat=2)]
print(out)

打印:

[[True,True]]

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?