如何解决将单元格分为两个和,并形成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 举报,一经查实,本站将立刻删除。