【发布时间】:2020-05-29 18:21:13
【问题描述】:
我有一个形状为(256,256,3) 的数据数组,其中轴(0,1) 上的每个值的值都为[1,0,0], [0,1,0],[0,0,1] 或[1,1,0]。
我想将其转换为形状为(256,256,4) 的数组,其中的值映射如下:
[1,0,0] -> [1,0,0,0]
[0,1,0] -> [0,1,0,0]
[0,0,1] -> [0,0,1,0]
[1,1,0] -> [0,0,0,1]
我尝试使用如下循环,但它不起作用。
for element in original_array:
if element == [1, 0, 0]:
new_array[:,:,0] = 1
elif element == [0, 1, 0]:
new_aray[:,:,1] = 1
elif element == [0, 0, 1]:
new_array[:,:,2] = 1
elif element == [1, 1, 0]:
new_array[:,:,3] = 1
我也尝试过这样的代码,但我不确定如何正确实现它:
new_array[:,:,0][original_array == [1,0,0]] = 1
new_array[:,:,1][original_array == [0,1,0]] = 1
new_array[:,:,2][original_array == [0,0,1]] = 1
new_array[:,:,3][original_array == [1,1,0]] = 1
我如何正确实现这两种方法,我可以使用哪些替代方法来完成这项任务?
【问题讨论】:
-
它是一个与问题相关的 3 维列表吗?您不只是替换最嵌套的列表吗?所以,如果你有一些代码在你的第一个代码块中提供了映射,那是一个可以接受的解决方案吗?
标签: python arrays numpy mapping