相关疑难解决方法(0)

熊猫:独特的数据帧

我有一个具有重复行的DataFrame.我想获得一个具有唯一索引且没有重复项的DataFrame.丢弃重复的值是可以的.这可能吗?它会完成groupby吗?

python pandas

32
推荐指数
2
解决办法
4万
查看次数

删除numpy数组的重复行

如何删除二维numpy数组的重复行?

data = np.array([[1,8,3,3,4],
                 [1,8,9,9,4],
                 [1,8,3,3,4]])
Run Code Online (Sandbox Code Playgroud)

答案应如下:

ans = array([[1,8,3,3,4],
             [1,8,9,9,4]])
Run Code Online (Sandbox Code Playgroud)

如果有两行相同,那么我想删除一个"重复"行.

python numpy

32
推荐指数
3
解决办法
4万
查看次数

从NumPy 2D阵列中删除重复的列和行

我正在使用2D形状阵列来存储经度+纬度对.有一次,我必须合并其中两个2D数组,然后删除任何重复的条目.我一直在寻找类似于numpy.unique的功能,但我没有运气.我一直在考虑的任何实现都看起来非常"未经优化".例如,我正在尝试将数组转换为元组列表,删除带有set的重复项,然后再次转换为数组:

coordskeys = np.array(list(set([tuple(x) for x in coordskeys])))
Run Code Online (Sandbox Code Playgroud)

有没有现成的解决方案,所以我不重新发明轮子?

为了说清楚,我正在寻找:

>>> a = np.array([[1, 1], [2, 3], [1, 1], [5, 4], [2, 3]])
>>> unique_rows(a)
array([[1, 1], [2, 3],[5, 4]])
Run Code Online (Sandbox Code Playgroud)

顺便说一句,我想只使用一个元组列表,但是这些列表非常大,以至于它们消耗了我的4Gb RAM + 4Gb交换(numpy数组更节省内存).

python numpy duplicate-removal scipy

20
推荐指数
3
解决办法
2万
查看次数

在对列表中查找唯一对

我有一个(大)整数列表列表,例如,

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

大多数对将出现两次,其中整数的顺序无关紧要(即[1, 2]相当于[2, 1]).我现在想找到只出现一次的对,并得到一个布尔列表来表示.对于上面的例子,

b = [False, False, False, True, False]
Run Code Online (Sandbox Code Playgroud)

由于a通常很大,我想避免显式循环.frozenset可能会建议映射到s,但我不确定这是否过度.

python list

14
推荐指数
2
解决办法
5763
查看次数

在numpy数组中查找多个值的行索引

我有一个数组X:

X = np.array([[4,  2],
              [9,  3],
              [8,  5],
              [3,  3],
              [5,  6]])
Run Code Online (Sandbox Code Playgroud)

我希望在这个数组中找到几个值的行的索引:

searched_values = np.array([[4, 2],
                            [3, 3],
                            [5, 6]])
Run Code Online (Sandbox Code Playgroud)

对于这个例子,我想要一个结果,如:

[0,3,4]
Run Code Online (Sandbox Code Playgroud)

我有一个代码这样做,但我认为它过于复杂:

X = np.array([[4,  2],
              [9,  3],
              [8,  5],
              [3,  3],
              [5,  6]])

searched_values = np.array([[4, 2],
                            [3, 3],
                            [5, 6]])

result = []

for s in searched_values:
    idx = np.argwhere([np.all((X-s)==0, axis=1)])[0][1]
    result.append(idx)

print(result)
Run Code Online (Sandbox Code Playgroud)

我找到了类似问题的答案,但它仅适用于1d阵列.

有没有办法以更简单的方式做我想做的事情?

python arrays numpy

14
推荐指数
3
解决办法
6702
查看次数

删除NumPy数组中包含重复项的行

我有(N,3)一系列numpy值:

>>> vals = numpy.array([[1,2,3],[4,5,6],[7,8,7],[0,4,5],[2,2,1],[0,0,0],[5,4,3]])
>>> vals
array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 7],
       [0, 4, 5],
       [2, 2, 1],
       [0, 0, 0],
       [5, 4, 3]])
Run Code Online (Sandbox Code Playgroud)

我想从数组中删除具有重复值的行.例如,上面数组的结果应该是:

>>> duplicates_removed
array([[1, 2, 3],
       [4, 5, 6],
       [0, 4, 5],
       [5, 4, 3]])
Run Code Online (Sandbox Code Playgroud)

我不知道如何在没有循环的情况下有效地使用numpy(数组可能非常大).谁知道我怎么能这样做?

python performance numpy vectorization

12
推荐指数
1
解决办法
1万
查看次数

如何在numpy中将负数舍入为零时消除额外减号?

我有一个关于fixfloor函数的简单问题numpy.当将大于-1的负数向零舍入时,将numpy它们正确地舍入为零但是留下负号.这个负号干扰了我的服装unique_rows函数,因为它使用ascontiguousarray比较数组的元素,这个符号扰乱了唯一性.圆形和修复在这方面表现相同.

>>> np.fix(-1e-6)
Out[1]: array(-0.0)
>>> np.round(-1e-6)
Out[2]: -0.0
Run Code Online (Sandbox Code Playgroud)

有关如何摆脱标志的任何见解?我考虑使用该np.sign功能,但它带来了额外的计算成本.

提前致谢.

python numpy unique rounding

12
推荐指数
2
解决办法
5650
查看次数

计算numpy.array中每行的出现次数

我试图计算每行显示的数字np.array,例如:

import numpy as np
my_array = np.array([[1, 2, 0, 1, 1, 1],
                     [1, 2, 0, 1, 1, 1], # duplicate of row 0
                     [9, 7, 5, 3, 2, 1],
                     [1, 1, 1, 0, 0, 0], 
                     [1, 2, 0, 1, 1, 1], # duplicate of row 0
                     [1, 1, 1, 1, 1, 0]])
Run Code Online (Sandbox Code Playgroud)

[1, 2, 0, 1, 1, 1]显示3次.

一个简单的天真解决方案将涉及将我的所有行转换为元组,并应用collections.Counter,如下所示:

from collections import Counter
def row_counter(my_array):
    list_of_tups = [tuple(ele) for ele in my_array]
    return …
Run Code Online (Sandbox Code Playgroud)

python arrays numpy pandas

10
推荐指数
3
解决办法
2310
查看次数

元素最大的两个稀疏矩阵

是否有一种简单/内置的方法来获得两个(或理想情况下更多)稀疏矩阵的元素最大值?即稀疏等价的np.maximum.

python numpy scipy

8
推荐指数
1
解决办法
2175
查看次数

numpy:图像中唯一的颜色列表

我有一张图片img:

>>> img.shape
(200, 200, 3)
Run Code Online (Sandbox Code Playgroud)

在像素(100,100)上我有一个很好的颜色:

>>> img[100,100]
array([ 0.90980393,  0.27450982,  0.27450982], dtype=float32)
Run Code Online (Sandbox Code Playgroud)

现在我的问题是:这张图片中有多少种不同的颜色,我该如何枚举它们?

我的第一个想法是numpy.unique(),但不知怎的,我正在使用这个错误.

python numpy

8
推荐指数
2
解决办法
5437
查看次数