【发布时间】:2014-09-15 01:26:16
【问题描述】:
我正在做一些内核 PCA 并想要稀疏矩阵。我在 Python 中做了所有事情,现在想将我的代码转换为 matlab 进行比较。
我在想稀疏化内核矩阵的时候有点挣扎。在 Python 中,这对我来说非常简单。这是一个简单矩阵的示例,可以向您展示我的意思:
import numpy as np
print('Sparsify a matrix by zeroing all elements but the top 2 values in a row.\n')
A = np.array([[1,2,3,4,5],[9,8,6,4,5],[3,1,7,8,9]])
print('Before:\n%s\n' %A)
for row in A:
sort_idx = np.argsort(row)[::-1] # get indexes of sort order (high to low)
for i in sort_idx[2:]:
row[i]=0
print('After:\n%s\n' %A)
Sparsify a matrix by zeroing all elements but the top 2 values in a row.
Before:
[[1 2 3 4 5]
[9 8 6 4 5]
[3 1 7 8 9]]
After:
[[0 0 0 4 5]
[9 8 0 0 0]
[0 0 0 8 9]]
那么,我将如何在 matlab 中做到这一点?
如果你能在这里帮助我,那就太好了。是否有等效于argsort 的方法,即连续获取例如 3 个最低值以便我可以将它们设置为 0?
【问题讨论】: