繁体   English   中英

如何在 python 的 for 循环中正确创建矩阵?

[英]How to properly create a matrix within a for loop in python?

我有一个名为SP的矩阵:

[   0.     134.825  280.45   280.45   280.45   280.45   280.45   280.45
  280.45   280.45   280.45   145.625    0.     134.825  280.45   280.45
  280.45   280.45   280.45   280.45   280.45   280.45   280.45   145.625
    0.     134.825  134.825  134.825  134.825  134.825  235.45   235.45
  235.45   235.45   235.45   100.625]

现在我想创建一个名为SP1的新矩阵并循环遍历它。 我是 python 的新手,但我知道 python 需要在循环外创建空矩阵,然后替换创建的值。

我使用了这段代码:

SP1 = np.zeros((len(SP),))

for d in range(len(SP)):
    if d ==0:
        SP1[d,] = SP[d,]
    else:
        if SP[d-1,] < SP[d,]:
            SP1[d-1,] = 0
            SP1[d,] = SP[d,]
        else:
            SP1[d,] = SP[d,]
            break
        break
    break
print(SP1)

然而,尽管出现了任何错误,但我得到了全零,就像我创建的矩阵 SP1 一样。 任何人都可以指导我找到问题吗?

这是我预期的 output:

 [0 0 280.45 280.45 280.45 280.45 280.45 280.45 280.45
 280.45 280.45 145.62 0 0 280.45 280.45 280.45 280.45 280.45 
280.45 280.45 280.45 280.45 145.62 0 134.82 134.82 134.82 
134.82 0 235.45 235.45 235.45 235.45 235.45 100.62] 

真的提前谢谢了。

您的问题是您如何索引 SP 和 SP1。 您应该会看到类似TypeError: list indices must be integers or slices, not tuple的错误。 你也不需要休息。 尝试这个:

for d in range(len(SP)):
    if d == 0:
        SP1[d] = SP[d]
    else:
        if SP[d - 1] < SP[d]:
            SP1[d - 1] = 0
            SP1[d] = SP[d]
        else:
            SP1[d] = SP[d]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM