在一个矩阵中,0是一种特殊的存在,所以为了对数据区分有时候我们需要找出矩阵中的非零元素。numpy是一种常用的矩阵运算的python库。numpy使用nonzero可以轻松的找出非零元素。那么具体该怎么操作呢,阅读下文你会得到答案。
直接上代码吧~
import numpy as np
a = np.array([[30,40,70],[80,20,10],[50,90,60]])
print(a)
print(np.nonzero(a))
[[30 40 70]
[80 20 10]
[50 90 60]]
(array([0, 0, 0, 1, 1, 1, 2, 2, 2], dtype=int64), array([0, 1, 2, 0, 1, 2, 0, 1, 2], dtype=int64))
第一个array为x轴 第二个array为y轴
补充:【Numpy学习】python查找矩阵中不为0元素的索引(np.nonzero())
在用矩阵分解方法做模型时,需要对模型的结果做验证。
在验证过程中需要mask训练集、验证集和测试集。
这时候就需要原矩阵S SS中不为0元素和为0元素的索引值,这个方法在matlab中是find方法,在用python实现时就需要np.nonzero()。
下面看一段代码:
import numpy as np
a = np.arange(12).reshape(3, 4)
print(a)
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
print(np.nonzero(a))
(array([0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2]), array([1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3]))
值得注意的是np.nonzero(a)输出的是两个array第一个array中的值指的是行,第二个指的是列。
如0,1表明第0行第一列的值不为0。
以上就是numpy找出非0元素的全部内容,希望能给大家一个参考,也希望大家多多支持W3Cschool。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。