gpt4 book ai didi

python - 基于BFS输出如何选择稀疏矩阵元素

转载 作者:行者123 更新时间:2023-11-28 22:21:50 26 4
gpt4 key购买 nike

我正在尝试根据 BFS 输出数组逐行选择稀疏矩阵元素。假设我的 BFS 输出是

[1, 2, 3, 6, 4, 7, 5, 8, 11, 9, 12, 10, 13, 15, 14, 16, 17, 18, 19, 20]

例如,我有一个 20x20 的稀疏矩阵。

现在我想使用 BFS 输出作为行索引,并按照与 BFS 输出数组和绘图相同的顺序从稀疏矩阵中选择非零值。这是我的代码,通过它我可以完成一些工作,但并不完全符合我的要求。

a = numpy.loadtxt('sparsematrix.txt', float, delimiter=',') # import data
y = numpy.reshape(a, np.size(a))
pos = np.delete(y, np.arange(0, y.size, 19))

plt.plot(pos)
plt.xlabel(sample)
plt.ylabel(position)

上面代码的问题是:

  1. 它按行选择每个值,但不按定义的顺序我的 BFS 输出。 (它应该使用 BFS 输出数组作为行索引号一个一个地选择非零值)
  2. 它选择所有值,甚至是零。 - 如何只获取非零值?
  3. 索引从 0 开始到 19。我希望索引从 1 开始。

最佳答案

重要更新

现在我通过阅读克里斯蒂安的回答得到了你完全想要的东西。我做了另一个功能来补充已经给出的功能。在这里查看整个程序:

sparseMatrix = ([0,4,5,0],[2,0,4,0],[0,3,3,0],[6,6,0,0])
iList = [3,1,2,4]

def AnalyzeSparseMatrix( sMatrix, iList ):
orderedArray = [] #The array you want as output
for i in iList:
orderedArray += AnalyzeRowWise(sMatrix[i-1]) #Add non-zero selected line from sparse matrix
return orderedArray #Returns a non-zero list ordered in the selected way by the BFS output list

def AnalyzeRowWise( oldArray ):
newMatrix = []
#Code to analize row wise
for data in oldArray:
if(data != 0): #Condition
newMatrix.append(data)
return newMatrix

#Test program
print (AnalyzeSparseMatrix(sparseMatrix, iList)) #Output: [3,3,4,5,2,4,6,6]

新方法 AnalyzeSparseMatrix() 有两个参数,第一个参数是稀疏矩阵,第二个参数是 BFS 输出列表。该方法返回一个列表,这是所需的列表。因此,您可以将该列表分配给您想要的另一个列表,例如:

finalOrderedList = AnalyzeSparseMatrix( sparseMatrix, iList )

在上面的代码中找到更多关于几乎每一行代码所做的事情的详细信息。

关于python - 基于BFS输出如何选择稀疏矩阵元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48006213/

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