如何通过创建单独的二进制数组有效地分割NumPy数组

问题描述 投票:1回答:1

我正在尝试分离以NumPy数组形式存储的图像中的不同对象。例如,如果我有2D NumPy数组:

X = np.array([1.4E14, 1.4E14, 1.6E14], [1.4E14, 1.6E14, 1.6E14], [1.6E14, 1.1E14, 1.1E14])

如何通过实例将其分成相同形状的二进制数组:

Y = ([1, 1, 0], [1, 0, 0], [0, 0, 0]), Z = ([0, 0, 1], [0, 1, 1], [1, 0, 0]), W = ([0, 0, 0], [0, 0, 0], [0, 1, 1])

其中Y表示1.4E14的值,Z表示1.6E14的值,W表示1.1E14的值,并且所有实例的形状均与原始数组相同。关于如何有效处理大型阵列的任何想法?

python arrays numpy image-segmentation
1个回答
0
投票
这应该可以解决:

import numpy as np X = ([1.4E14, 1.4E14, 1.6E14], [1.4E14, 1.6E14, 1.6E14], [1.6E14, 1.1E14, 1.1E14]) numbers = [1.4E14, 1.6E14, 1.1E14] x = np.array(X) for j in numbers: result = (x == j)+0 print("comparing with " + str(j)) print(result[:].tolist()) print("")


0
投票
您想要np.where

values = {1.4E14, 1.6E14, 1.1E14} lst = [] for k, v in values.items(): lst.append(np.where(X == val, 1, 0))

一个衬板{k: np.where(X == v, 1, 0) for k, v in {'Y': 14, 'Z': 16, 'W': 11}.items()}

{ 'Y': array([[1, 1, 0], [1, 0, 0], [0, 0, 0]]), 'Z': array([[0, 0, 1], [0, 1, 1], [1, 0, 0]]), 'W': array([[0, 0, 0], [0, 0, 0], [0, 1, 1]]) }

© www.soinside.com 2019 - 2024. All rights reserved.