相关疑难解决方法(0)

矢量化numpy对于子阵列是唯一的

我有一个形状(N,20,20)的numpy数组数据,N是一些非常大的数字.我想获得每个20x20子阵列中唯一值的数量.循环将是:

values = []
for i in data:
    values.append(len(np.unique(i)))
Run Code Online (Sandbox Code Playgroud)

我怎么能对这个循环进行矢量化?速度是一个问题.

如果我尝试np.unique(数据),我得到整个数据数组的唯一值,而不是单独的20x20块,所以这不是我需要的.

python numpy

5
推荐指数
1
解决办法
462
查看次数

Numpy:按行唯一元素

有谁知道如何在矩阵中逐行获取唯一元素。例如输入矩阵可能类似于:

a = [[1,2,1,3,4,1,3],
     [5,5,3,1,5,1,2],
     [1,2,3,4,5,6,7],
     [9,3,8,2,9,8,4],
     [4,6,7,4,2,3,5]]
Run Code Online (Sandbox Code Playgroud)

它应该返回以下内容:

b = rowWiseUnique(a)
=>  b = [[1,2,3,4,0,0,0],
       [5,3,1,2,0,0,0],
       [1,2,3,4,5,6,7],
       [9,3,8,2,4,0,0],
       [4,6,7,2,3,5,0]]
Run Code Online (Sandbox Code Playgroud)

在 numpy 中执行此操作最有效的方法是什么?我尝试了以下代码,是否有更好、更短的方法来执行此操作?

import numpy as np
def uniqueRowElements(row):
    length = row.shape[0]
    newRow = np.unique(row)
    zerosNumb = length-newRow.shape[0]
    zeros = np.zeros(zerosNumb)
    nR = np.concatenate((newRow,zeros),axis=0)
    return nR    

b = map(uniqueRowElements,a)
b = np.asarray(b)
print b
Run Code Online (Sandbox Code Playgroud)

python numpy scipy

4
推荐指数
1
解决办法
5147
查看次数

标签 统计

numpy ×2

python ×2

scipy ×1