gpt4 book ai didi

python - 给定数据和坐标初始化 lil_matrix

转载 作者:太空宇宙 更新时间:2023-11-03 18:20:46 26 4
gpt4 key购买 nike

这是我要做的事情的一个例子:

my_rows = [[1, 3], [0, 2], [], [1]]
my_data = [[1,1], [1,1], [],[1]]

我想创建一个像这样的矩阵:

import numpy as np
from scipy import sparse
my_lil = sparse.lil_matrix(np.array([[0,1,0,1],
[1,0,1,0],
[0,0,0,0],
[0,1,0,0]]))

所以

>>> my_lil.rows
array([[1, 3], [0, 2], [], [1]], dtype=object)

我觉得我错过了一些非常简单的东西,就像看看初始化是多么容易coo_matrix ,但是我没有看到 lil_matrix 这样的东西

这是我最好的尝试:

my_lil = sparse.lil_matrix([[1,1], [1,1], [],[1]], [[1, 3], [0, 2], [], [1]])

此操作失败并出现以下错误:

TypeError: Cannot cast array data from dtype('O') to dtype('bool') according to the rule 'safe'

我正在使用:

>>> scipy.__version__
'0.14.0'

最佳答案

正如 Scipy 文档中所述,lil_matrix 仅支持通过传递密集或稀疏矩阵或给出所需形状(导致空矩阵)进行实例化。我发现 lil_matrix 不支持这种形式的实例化的主要原因之一是列数将是不确定的。

鉴于此,您可以实例化一个 coo_matrix,因为它支持通过传递数据和定位参数进行实例化,或者您可以创建自己的实例化形式来处理您认为合适的形状。

class my_lil_matrix(sparse.lil_matrix):
def __init__(self, *args, **kwargs):
if len(args) >= 2 and isinstance(args[1], list):
try:
data, rows = args
except:
raise TypeError("Invalid input format")

if kwargs.get('shape') is None:
# Column count will just be the largest value in rows
M, N = (len(rows), max(np.array(rows).max()) + 1)
else:
M, N = shape

super(my_lil_matrix, self).__init__((M, N), **kwargs)

self.data = np.array(data, copy=kwargs.get('copy'),
dtype=kwargs.get('dtype'))
self.rows = np.array(rows, copy=kwargs.get('copy'),
dtype=kwargs.get('dtype'))
else:
super(my_lil_matrix, self).__init__(*args, **kwargs)

关于python - 给定数据和坐标初始化 lil_matrix,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24192876/

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