gpt4 book ai didi

python - 0/1 矩阵输出中的冗余行

转载 作者:行者123 更新时间:2023-11-30 22:33:44 25 4
gpt4 key购买 nike

我正在尝试创建一个脚本,该脚本可以让我输出不同项目优化选择可能的所有不同组合。简而言之,有 6 个项目(A B C D E F),每个项目都有 2、3 或 6 种可能的优化选择,它们是互斥的(例如,您不能同时选择 F4 和 F5)。

    import numpy as np

A = range(1, 3)
B = range(1, 3)
C = range(1, 7)
D= range(1,3)
E=range(1,3)
F=range(1,4)

length = len(A) + len(B) + len(C) + len(D) + len(E) + len(F)
nb_projet = len(A) * len(B) * len(C) * len(D) * len(E) * len(F)

result = np.zeros((length, nb_projet))


for k in range(len(A)):
for i in range(len(A)):
for j in range(nb_projet):
result[i, j] = (i+j % len(A)) == k

for k in range(len(B)):
for i in range(len(B)):
for j in range(nb_projet):
result[i + len(A), j] = (i+j % len(B)) == k

for k in range(len(C)):
for i in range(len(C)):
for j in range(nb_projet):
result[i + len(A)+len(B), j] = (i+j % len(C)) == k

for k in range(len(D)):
for i in range(len(D)):
for j in range(nb_projet):
result[i + len(A)+len(B)+len (C), j] = (i+j % len(D)) == k


for k in range(len(E)):
for i in range(len(E)):
for j in range(nb_projet):
result[i + len(A)+len(B)+len (C)+len(D), j] = (i+j % len(E)) == k

for k in range(len(F)):
for i in range(len(F)):
for j in range(nb_projet):
result[i + len(A)+len(B)+len (C)+len(D)+len(E), j] = (i+j % len(F)) == 0


print (result.T)

np.savetxt("ResultsS2.txt", result, delimiter=" ")

基本上,如果选择优化,代码应该添加 1。目前它仅生成 6 种不同的场景,而不是可能的 250 多种。

有人知道如何解决这个问题吗?

非常感谢你!

最佳答案

这只是一堆串联的单热数组,因此利用second answer heremeshgrid来创建完整的阶乘,你可以这样做:

projects = [2,2,6,2,2,3] #[A.size, B.size, C.size . . .]
m = np.meshgrid(*[np.arange(i) for i in projects])
oneHots = [np.eye(projects[i])[m[i].flat] for i in range(len(projects))]
out = np.hstack(oneHots).T

out.shape
>(17, 288)

关于python - 0/1 矩阵输出中的冗余行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45075927/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com