nonzeros解析与实例

from numpy import *
data = [[1,2,5,6],
        [4,8,5,9],
        [8,7,4,2],
        [6,8,4,9],
        [8,2,1,6],
        [1,2,5,6],
        [4,8,5,9]]
index = [[1,55],
         [1,48],
         [2,59],
         [3,56],
         [2,74],
         [1,46],
         [3,99]]

data = mat(data)
index = mat(index) #必须是矩阵的形式,不然上边都是列表

print(index[:,0] == 1)
print(nonzero(index[:,0] == 1))
print(data[nonzero(index[:,0] == 1)])
# [[ True]
#  [ True]
#  [False]
#  [False]
#  [False]
#  [ True]
#  [False]]
# (array([0, 1, 5], dtype=int64), array([0, 0, 0], dtype=int64))
# [[1 4 1]]

#nonzeros返回的是True的下标 但注意是【【】】一层还是两层
print(data[nonzero(index[:,0] == 1)[0]])
# [[1 2 5 6]
#  [4 8 5 9]
#  [1 2 5 6]]
#这是返回的两者的区别
lists = [1,4,8,5,6]
lists = array(lists)
print(nonzero(lists > 4)[0])
print(nonzero(lists > 4))
# [2 3 4]
# (array([2, 3, 4], dtype=int64),)
#数据为mat时与数据为array时的返回的区别
data = [[1,2,3],
            [2,5,4],
            [2,6,9],
            [7,4,9]]
data = array(data)
print(data[nonzero(data[:,1] <= 4)[0],:][0])

data = [[1,2,3],
            [2,5,4],
            [2,6,9],
            [7,4,9]]
data = mat(data)
print(data[nonzero(data[:,1] <= 4)[0],:][0])
# [1 2 3]
# [[1 2 3]]
#矩阵和列表的区别
def loadData():
    return [[1,1,1,0,0],
            [2,2,2,0,0],
            [1,1,1,0,0],
            [5,5,5,0,0],
            [1,1,0,2,2],
            [0,0,0,3,3],
            [0,0,0,1,1]]
#利用numpy中的sVD进行分解
data = mat(loadData())
print(data[0,:].A)
#[[1 1 1 0 0]]
print(type(data[0,:].A))
#<class 'numpy.ndarray'>
print(type(data[0,:].A == 1))
#<class 'numpy.ndarray'>
print(type(nonzero(data[0,:].A == 1)))
#<class 'tuple'>
for i in nonzero(data[0,:].A == 1):
    print(i)
'''
[0 0 0]
[0 1 2]
'''

data1 = array([1,2,3,1])
print(nonzero(data1 == 1))
#(array([0, 3], dtype=int64),)
print(type(nonzero(data1 == 1)))
#<class 'tuple'>
for j in nonzero(data1 == 1):
    print(j)
    #[0 3]

array与mat的区别

data2 = array(loadData())
print(nonzero(data[0,:] == 1))
print(nonzero(data[0,:].A == 1))
print(nonzero(data2[0,:] == 1))
'''
(array([0, 0, 0], dtype=int64), array([0, 1, 2], dtype=int64))
(array([0, 0, 0], dtype=int64), array([0, 1, 2], dtype=int64))
(array([0, 1, 2], dtype=int64),)

'''



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

best啊李

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值