首页 > 解决方案 > 在 Scipy 中初始化、for 循环和追加

问题描述

在原始 python 中,我们可以这样做:

new_list = []
for index in range(3):

    new_values = list(range(index, 3 + index))
    new_list.append(values)

print(new_list)
# [[0, 1, 2], [1, 2, 3], [2, 3, 4]]

我们如何在 Scipy 中使用稀疏矩阵做到这一点?

标签: pythonscipysparse-matrix

解决方案


您有正确的使用想法,并且hstack您确实可以使用. 在大多数情况下,接受类似数组的对象。因此,在您的情况下,我们可以只使用您尝试在. 查看新代码:numpyhstacknumpyhstack

import numpy as np

new_list = np.array([])
for index in range(3):

    new_values = list(range(index, 3 + index))
    new_list = np.hstack([new_list, new_values])

print(new_list)
# [0. 1. 2. 1. 2. 3. 2. 3. 4.]

如果您想要为要附加的每个列表提供单独的维度,则可以np.vstack将数组初始化new_list为 2D。这是代码:

import numpy as np

new_list = np.empty((0, 3))
for index in range(3):

    new_values = list(range(index, 3 + index))

    new_list = np.vstack([new_list, new_values])

print(new_list)
# [[0. 1. 2.]
#  [1. 2. 3.]
#  [2. 3. 4.]]

这是一个使用字符串执行相同操作的示例。

import numpy as np
import string

new_list = np.empty((0, 3))
for index in range(3):

    new_values = [string.ascii_lowercase[i] for i in range(index, 3 + index)]
    new_list = np.vstack([new_list, new_values])

print(new_list)
# [['a' 'b' 'c']
#  ['b' 'c' 'd']
#  ['c' 'd' 'e']]

推荐阅读