【发布时间】:2018-08-29 23:03:14
【问题描述】:
从浮点数列表开始,即
register = [11, 12, 13, 23, 24, 34]
我想生成对角线元素为零的对称矩阵,即
[[ 0. 11. 12. 13.]
[ 11. 0. 23. 24.]
[ 12. 23. 0. 34.]
[ 13. 24. 34. 0.]]
所以我选择创建一个尺寸为 4 x 4 的零,然后用列表中的元素填充。在设置进度指示器并考虑偏移量以不覆盖对角线的零点之后,我将向东(或向南)移动,直到消耗了先前确定的达到矩阵限制的步数。在增加进度并重置初始计步器后,我可以输入下一列(行)以继续进行。然而,我在我现在的代码中犯了错误(至少一次——这是我第一次接触 numpy)并且只收获了
[[ 0. 11. 12. 13.]
[ 11. 0. 23. 0.]
[ 12. 23. 0. 0.]
[ 13. 0. 0. 0.]]
我的代码:
import numpy as np
dimension = 4 # other matrices' dimensions will be larger
matrix = np.zeros((dimension,dimension))
register = [11, 12, 13, 23, 24, 34]
progress = 0
inner_step = 0
i = 0
for progress in range(0, (dimension + 1)):
permitted_steps = dimension - progress
for i in range(progress, permitted_steps-1):
matrix[(progress, inner_step+1+offset)] = register[0]
matrix[(inner_step+1+offset, progress)] = register[0]
inner_step += 1
del register[0]
progress += 1
inner_step = 0
offset += 1
使用的目标环境是适用于 Windows 的 Python 2.7 (Continuum Anaconda)。
【问题讨论】:
标签: python numpy type-conversion