python - 使用随机列表生成二进制矩阵
问题描述
所以首先这里是我的代码我有疑问,我觉得答案很简单,但我太盲目了,看不到它
dic = {}
for i in range(0,9):
dic['rand_num{0}'.format(i)] = np.sort(random.sample(range(0,8),5))
mat = np.zeros([8,8])
for rand_num in dic.values():
print(rand_num)
for i in range(0,5):
matrixval = rand_num[i]
#print(matrixval)
for j in range(0,8):
mat[matrixval,j] = 1
print(mat)
我创建了 8 个不同的列表,它们将帮助我确定在矩阵中设置 1 的位置。
所以例如。如果我的第一个列表如下所示:
rand_List = [0,3,5,6,7]
第一行或第一列的矩阵应该是这样的
矩阵 = [1, 0, 0, 1, 0, 1, 1, 1]
我对矩阵值的位置是在第二个循环中设置的:for i in range(0,5): matrixval = rand_num[i]
. 但是,一旦我运行我的代码,我的矩阵只会给我一个而不是一个和零。我觉得我的最后一个 for 循环中有一个迭代问题,我不知道如何解决它。
如果有人可以帮助我,或者只是给我一个提示,如何真正解决我这个有希望的小错误,我将不胜感激。
解决方案
希望这提供了预期的结果:
dic = {}
for i in range(0,8):
dic['rand_num{0}'.format(i)] = np.sort(random.sample(range(0,8),5))
mat = np.zeros([8,8])
for j, rand_num in enumerate(dic.values()):
print(rand_num)
for i in range(0,5):
matrixval = rand_num[i]
mat[j,matrixval] = 1
print(mat)
输出:
[1 2 3 5 7]
[0 1 2 5 6]
[0 1 2 3 5]
[1 2 3 4 6]
[0 1 3 4 7]
[1 2 4 5 7]
[0 1 3 4 7]
[1 2 3 4 6]
[[0. 1. 1. 1. 0. 1. 0. 1.]
[1. 1. 1. 0. 0. 1. 1. 0.]
[1. 1. 1. 1. 0. 1. 0. 0.]
[0. 1. 1. 1. 1. 0. 1. 0.]
[1. 1. 0. 1. 1. 0. 0. 1.]
[0. 1. 1. 0. 1. 1. 0. 1.]
[1. 1. 0. 1. 1. 0. 0. 1.]
[0. 1. 1. 1. 1. 0. 1. 0.]]
推荐阅读
- javascript - .bat 文件以打开 chrome 转到 url 并执行 JavaScript
- php - 为多行插入第二个自动增量 ID
- php - Wordpress 有一个讨厌的重定向,不允许使用 ssl
- polymer - 如何在聚合物制作的自定义组件中测试 ajax 请求
- java - Java中的可外部化数组
- django - 'cx_Oracle.Cursor' 对象在 Django 上没有属性 'numbersAsStrings'
- c - 为什么自动完成中没有显示gets方法?
- apache-kafka - Kafka Streams - 从 KTable 中消失的值
- tcpdump - TCP Dump 命令仅用于从 2 个特定接口捕获
- python - 使用正则表达式 pandas 调用特定列