美文网首页
任意维 np 矩阵输出满足条件的值 位置

任意维 np 矩阵输出满足条件的值 位置

作者: 谢小帅 | 来源:发表于2018-12-24 23:09 被阅读9次

统计数据中满足某个条件的数的个数,并将其位置输出

首先看 二维 np 矩阵

import numpy as np

a = np.arange(1, 16).reshape((3, 5))
print(a)
b = np.where(a % 2 == 0)
print(b)
[[ 1  2  3  4  5]
 [ 6  7  8  9 10]
 [11 12 13 14 15]]
(array([0, 0, 1, 1, 1, 2, 2], dtype=int64), array([1, 3, 0, 2, 4, 1, 3], dtype=int64))

可以看到 np.where 返回的结果中,

  • 第1个array表示满足条件的数字的行号
  • 第2个array表示满足条件的数字的列号

高维矩阵依次类推,可以得到任意维矩阵找出满足条件下标的一般算法:

def get_cond_idx(X, cond=None):
    find = np.where(cond)  # condition: bool array like
    idx = find[0]  # first dimension, at least has one array find[0]
    for i in range(1, X.ndim):
        idx = np.vstack((idx, find[i]))
    return {
        'data': X[find],
        'idx': idx.T,
        'num': find[0].__len__()
    }
# 二维数据
a = np.arange(1, 16).reshape((3, 5))
print(a)
b = get_cond_idx(a, cond=a % 2 == 0)
for i in range(b['num']):
    print(i, b['idx'][i], b['data'][i])
[[ 1  2  3  4  5]
 [ 6  7  8  9 10]
 [11 12 13 14 15]]
0 [0 1] 2
1 [0 3] 4
2 [1 0] 6
3 [1 2] 8
4 [1 4] 10
5 [2 1] 12
6 [2 3] 14
# 三维数据
a = np.arange(1, 25).reshape((2, 3, 4))
print(a)
b = get_cond_idx(a, cond=a % 5 == 0)
for i in range(b['num']):
    print(i, b['idx'][i], b['data'][i])
[[[ 1  2  3  4]
  [ 5  6  7  8]
  [ 9 10 11 12]]

 [[13 14 15 16]
  [17 18 19 20]
  [21 22 23 24]]]
0 [0 1 0] 5
1 [0 2 1] 10
2 [1 0 2] 15
3 [1 1 3] 20

相关文章

  • 任意维 np 矩阵输出满足条件的值 位置

    统计数据中满足某个条件的数的个数,并将其位置输出 首先看 二维 np 矩阵 可以看到 np.where 返回的结果...

  • numpy学习笔记

    numpy和矩阵的使用联系起来理解 1、创建矩阵 一维矩阵(向量):np.array([1,2,3]) 矩阵:np...

  • np.where

    将输出的y化成一个2维矩阵来看,那么得到每一列都是满足条件x>0.5的像素的坐标,一共有6个像素满足条件,所以有6...

  • Numpy中几种矩阵的乘法

    dot 同线性代数中矩阵乘法的定义: np.dot()np.dot(A, B):对于二维矩阵,计算真正意义上的矩阵...

  • Counter(),np.unique(),np.bincoun

    Counter() np.bincount() np.unique() 取出满足条件的元素

  • 跟老奶奶说numpy中的mat与array

    1. 区别 1)np.array更具通用性,np.mat只适用于二维矩阵,维数超过2以后,np.mat就不适用了。...

  • 2018-07-09 代码

    np.meshgrid 从坐标向量返回坐标矩阵 #将两个一维数组变为二维矩阵 numpy之meshgrid和whe...

  • OpenCV 矩阵边界报错问题排查流程 cv::error()

    如果在使用 OpenCV 做矩阵运算的时候,出现这种错误。那就意味着参与运算的矩阵在长宽条件上不满足正整数的条件值...

  • numpy

    import as np np.array创建矩阵 np.shape查看矩阵维度 np.genfromtxt('n...

  • 矩阵的特征值与特征向量算法

    矩阵特征值和特征向量定义 A为n阶矩阵,若数λ和n维非0列向量x满足Ax=λx,那么数λ称为A的特征值,x称为A的...

网友评论

      本文标题:任意维 np 矩阵输出满足条件的值 位置

      本文链接:https://www.haomeiwen.com/subject/npntlqtx.html