相关疑难解决方法(0)

在numpy.array中查找唯一的行

我需要找到一个独特的行numpy.array.

例如:

>>> a # I have
array([[1, 1, 1, 0, 0, 0],
       [0, 1, 1, 1, 0, 0],
       [0, 1, 1, 1, 0, 0],
       [1, 1, 1, 0, 0, 0],
       [1, 1, 1, 1, 1, 0]])
>>> new_a # I want to get to
array([[1, 1, 1, 0, 0, 0],
       [0, 1, 1, 1, 0, 0],
       [1, 1, 1, 1, 1, 0]])
Run Code Online (Sandbox Code Playgroud)

我知道我可以在阵列上创建一个集合并循环,但我正在寻找一个有效的纯numpy解决方案.我相信有一种方法可以将数据类型设置为void然后我可以使用numpy.unique,但我无法弄清楚如何使其工作.

python arrays numpy unique

185
推荐指数
9
解决办法
8万
查看次数

什么是np.unravel_index的直观解释?

几乎就是标题所说的.我已经阅读了文档,并且我已经使用了该函数一段时间,但我无法分辨出这种转换的物理表现形式.

python indexing numpy

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

一次获取NumPy数组中的几个元素的索引

有没有办法一次获取NumPy数组中的几个元素的索引?

例如

import numpy as np
a = np.array([1, 2, 4])
b = np.array([1, 2, 3, 10, 4])
Run Code Online (Sandbox Code Playgroud)

我想找到ain 中每个元素的索引b,即:[0,1,4].

我发现我使用的解决方案有点冗长:

import numpy as np

a = np.array([1, 2, 4])
b = np.array([1, 2, 3, 10, 4])

c = np.zeros_like(a)
for i, aa in np.ndenumerate(a):
    c[i] = np.where(b==aa)[0]

print('c: {0}'.format(c))
Run Code Online (Sandbox Code Playgroud)

输出:

c: [0 1 4]
Run Code Online (Sandbox Code Playgroud)

python arrays numpy

21
推荐指数
3
解决办法
7729
查看次数

从数组中删除另一个数组中的元素

假设我有这些2D阵列A和B.

如何从B中删除A中的元素.(集合论中的补充:AB)

A=np.asarray([[1,1,1], [1,1,2], [1,1,3], [1,1,4]])
B=np.asarray([[0,0,0], [1,0,2], [1,0,3], [1,0,4], [1,1,0], [1,1,1], [1,1,4]])
#output = [[1,1,2], [1,1,3]]
Run Code Online (Sandbox Code Playgroud)

更确切地说,我想做这样的事情.

data = some numpy array
label = some numpy array
A = np.argwhere(label==0) #[[1 1 1], [1 1 2], [1 1 3], [1 1 4]]
B = np.argwhere(data>1.5) #[[0 0 0], [1 0 2], [1 0 3], [1 0 4], [1 1 0], [1 1 1], [1 1 4]]
out = np.argwhere(label==0 and data>1.5) #[[1 1 2], [1 1 3]]
Run Code Online (Sandbox Code Playgroud)

python arrays numpy

20
推荐指数
4
解决办法
9750
查看次数

将 numpy 数组的组名映射到索引的最快方法是什么?

我正在使用激光雷达的 3D 点云。这些点由 numpy 数组给出,如下所示:

points = np.array([[61651921, 416326074, 39805], [61605255, 416360555, 41124], [61664810, 416313743, 39900], [61664837, 416313749, 39910], [61674456, 416316663, 39503], [61651933, 416326074, 39802], [61679969, 416318049, 39500], [61674494, 416316677, 39508], [61651908, 416326079, 39800], [61651908, 416326087, 39802], [61664845, 416313738, 39913], [61674480, 416316668, 39503], [61679996, 416318047, 39510], [61605290, 416360572, 41118], [61605270, 416360565, 41122], [61683939, 416313004, 41052], [61683936, 416313033, 41060], [61679976, 416318044, 39509], [61605279, 416360555, 41109], [61664837, 416313739, 39915], [61674487, 416316666, 39505], [61679961, 416318035, 39503], [61683943, 416313004, 41054], [61683930, 416313042, 41059]])
Run Code Online (Sandbox Code Playgroud)

我想将我的数据分组到大小的立方体中, …

python hash grouping numpy lidar

10
推荐指数
2
解决办法
943
查看次数

numpy.ravel_multi_index 如何工作?

有人可以向我解释一下这个功能是做什么的吗?我不理解文档,也看不到文档示例中给出的输入到输出之间的清晰映射。

关联

python numpy

7
推荐指数
0
解决办法
1880
查看次数

计算矩阵中出现的行数(numpy)

有没有更好的方法来计算给定行在numpy 2D数组中出现的次数

def get_count(array_2d, row):
    count = 0
    # iterate over rows, compare
    for r in array_2d[:,]:
        if np.equal(r, row).all():
            count += 1
    return count    

# let's make sure it works

array_2d = np.array([[1,2], [3,4]])
row = np.array([1,2])       

count = get_count(array_2d, row)
assert(count == 1)
Run Code Online (Sandbox Code Playgroud)

python numpy

6
推荐指数
1
解决办法
544
查看次数

Python遍历灰度图像中的连接组件

我有一个灰度图像,其值介于 0(黑色)和白色(255)之间。我有一个target与灰度图像大小相同的矩阵。我需要从灰度图像中的一个随机像素开始,一次遍历图像一个像素(以深度优先搜索方式),将其值复制到target矩阵中的相应位置。我显然只需要对非白色像素执行此操作。我怎样才能做到这一点?本以为可以得到灰度图像的连通分量,将每个像素点一个一个地遍历,但是找不到合适的连通分量的实现。有任何想法吗?

例如,如果我的灰度图像是:

[[255,255,255,255,255,255,255]
[255,255, 0 ,10 ,255,255, 1 ]
[255,30 ,255,255,50 ,255, 9 ]
[51 ,20 ,255,255, 9 ,255,240]
[255,255,80 ,50 ,170,255, 20]
[255,255,255,255,255,255, 0 ]
[255,255,255,255,255,255, 69]]
Run Code Online (Sandbox Code Playgroud)

然后可能的遍历[0,10,50,9,170,50,80,20,51,30]后跟[1,9,240,20,0,69]to give [0,10,50,9,170,50,80,20,51,30,1,9,240,20,0,69]。不同对象之间的顺序无关紧要。

其他可能的遍历是: [1,9,240,20,0,69,0,10,50,9,170,50,80,20,51,30][1,9,240,20,0,69,0,10,50,9,170,50,80,20,30,51][1,9,240,20,0,69,10,50,9,170,50,80,20,30,0,51]

等等。

python numpy image python-imaging-library connected-components

6
推荐指数
1
解决办法
1132
查看次数

如何使用 Numpy 在不同数组中找到相同的行,而不管元素顺序如何?

我正在做一个项目,偶然发现了这个问题。我有两个形状为 (8,3) 和 (2,2) 的数组 A 和 B。无论 B 中元素的顺序如何,如何找到 A 中包含 B 每行元素的所有行?

A = np.random.randint(0,5,(8,3))
B = np.random.randint(0,5,(2,2))
Run Code Online (Sandbox Code Playgroud)

谢谢!

python numpy pandas

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

如何将图像集合中的像素(R、G、B)映射到不同的像素颜色值索引?

假设有 600 个带注释的语义分割掩模图像,其中包含 10 种不同的颜色,每种颜色代表一个实体。这些图像位于形状 (600, 3, 72, 96) 的 numpy 数组中,其中 n = 600、3 = RGB 通道、72 = 高度、96 = 宽度。

如何将 numpy 数组中的每个 RGB 像素映射到颜色索引值?例如,颜色列表将为 [(128, 128, 0), (240, 128, 0), ...n],并且 numpy 数组中的所有 (240, 128, 0) 像素将转换为索引唯一映射中的值 (= 1)。

如何用更少的代码高效地做到这一点?这是我想出的一种解决方案,但速度相当慢。

# Input imgs.shape = (N, 3, H, W), where (N = count, W = width, H = height)
def unique_map_pixels(imgs):
  original_shape = imgs.shape

  # imgs.shape = (N, H, W, 3)
  imgs = imgs.transpose(0, 2, 3, 1)

  # …
Run Code Online (Sandbox Code Playgroud)

python performance numpy image image-processing

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

在没有循环的情况下查找二维数组中匹配行的索引(一次)

我想从二维数组 a 中找到多个匹配行

a = np.array([[2, 1],
          [3, 3],
          [4, 6],
          [4, 8],
          [4, 7],
          [4, 3]])
Run Code Online (Sandbox Code Playgroud)

我必须搜索以下条目

 b = np.array([[4,6],
          [4,7]])
Run Code Online (Sandbox Code Playgroud)

我知道我可以循环 b 并执行以下操作

for i in range(len(b)) :
   print(np.where(np.all(a==b[i],axis=1))[0])
Run Code Online (Sandbox Code Playgroud)

我开始关注

[2]
[4]
Run Code Online (Sandbox Code Playgroud)

我可以不使用任何循环直接获取 [[2],[4]] 吗?

python arrays search 2d numpy

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

查找两个 numpy 数组中匹配行的索引

如何找到两个 numpy 数组之间完全匹配的行索引。例如:

x = np.array(([0,1],
              [1,0],
              [0,0]))
y = np.array(([0,1],
              [1,1],
              [0,0]))
Run Code Online (Sandbox Code Playgroud)

这应该返回:

matches = [0,2] # Match at row no 0 and 2
Run Code Online (Sandbox Code Playgroud)

numpy

3
推荐指数
1
解决办法
4306
查看次数

从两个给定的整数Python Numpy中创建唯一整数

我试图用自定义索引索引一个numpy数组.我理解索引只能是整数.

我看到的两个数字对中的一些:

400, 200
300, 100
500, 60
Run Code Online (Sandbox Code Playgroud)

我想从这对中生成唯一的整数,以便我可以使用它们来索引一个numpy数组.喜欢,

npArray[400200, 1] = someVal
npArray[300100, 2] = someOtherVal
Run Code Online (Sandbox Code Playgroud)

问题是,我的numpy数组的大小只有4000*2.如何从属于这4000范围的那些对中生成唯一标识符?

提前致谢.

python arrays indexing numpy uniqueidentifier

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