所以我有一个3D阵列:
>>> img_data.shape
(182, 218, 182)
我的想法是将每个等于0的值替换为255。我尝试过:
new_img = np.zeros(img_range)
print(new_img.shape)
for i in range(img_range[0]):
for j in range(img_range[1]):
for k in range(img_range[2]):
print "%s %s %s" % (i, j, k )
if img_data[i][j][k] == 0:
new_img[i][j][k] = 2
else:
new_img[i][j][k] = img_data[i][j][k]
但是这是永远的,很可能是因为Python是动态的并且可能在后台执行某些操作。
关于如何改善这一点的任何想法? 谢谢, 罗德里戈
答案 0 :(得分:1)
您不需要编写自己的循环。
您可以使用方括号[]
访问符合一个或多个条件的所有元素。检查boolean array indexing。
示例:
import numpy as np
a = np.random.randint(0, 5, size=(10, 10, 10))
a[a == 0] = -100