我正在尝试分离以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的值,并且所有实例的形状均与原始数组相同。关于如何有效处理大型阵列的任何想法?
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("")
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]]) }