我需要找到一个独特的行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,但我无法弄清楚如何使其工作.
几乎就是标题所说的.我已经阅读了文档,并且我已经使用了该函数一段时间,但我无法分辨出这种转换的物理表现形式.
有没有办法一次获取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) 假设我有这些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) 我正在使用激光雷达的 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)
我想将我的数据分组到大小的立方体中, …
有人可以向我解释一下这个功能是做什么的吗?我不理解文档,也看不到文档示例中给出的输入到输出之间的清晰映射。
有没有更好的方法来计算给定行在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) 我有一个灰度图像,其值介于 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
我正在做一个项目,偶然发现了这个问题。我有两个形状为 (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)
谢谢!
假设有 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) 我想从二维数组 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]] 吗?
如何找到两个 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数组.我理解索引只能是整数.
我看到的两个数字对中的一些:
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范围的那些对中生成唯一标识符?
提前致谢.