【发布时间】:2014-09-21 20:46:42
【问题描述】:
我有一个类似于 [0 0 0],[3 3 3],[255 255 255] 的数组(数字是 RGB 值),我想删除所有具有 [0 0 0] 值的项目] 并作为结果-> [3 3 3],[5 5 5]。为了实现我的不同算法,首先我必须使我的数组成为一个列表(使用 .tolist 方法),它会返回一个像这样的列表:“[0, 0, 0]”,“[3,3,3 ]","[255, 255, 255]". 那么第一个问题:[0 0 0] 和 "[0, 0, 0]" 有什么区别吗?
此外,我还使用了许多主题中提出的不同算法,例如:
for n,i in enumerate(mylist)
if 0 in i: mylist[n].remove(0)
或
def clear_list_from_item(mylist, item):
try:
while True: mylist.remove(item)
except ValueError:
return mylist
mylist = [clear_list_from_item(x, 0) for x in mylist]
而且它们都没有返回结果。所以我的第二个问题:为什么?是因为我的列表,因为当我应用它时,让我们说在列表中像 =[[3,4],[5],[6,7,8]] 所有这些都很好用.
更新:1)嵌套级别:269x562(即我正在使用的图片的高度x宽度,因此我得到每个像素的列表) 2)我在.tolist()方法之前的数组第一行的18个值的初始数组
[[ 0 0 0]
[255 255 255]
[255 255 255]
[255 255 255]
[255 255 255]
[250 250 250]
[255 255 255]
[255 255 255]
[255 255 255]
[255 255 255]
[ 0 0 0]
[ 0 0 0]
[ 0 0 0]
[ 0 0 0]
[ 0 0 0]
[ 0 0 0]
[ 0 0 0]
[ 0 0 0]
【问题讨论】:
-
你的数组是什么`A
numpy.array? -
-
看起来你的数组不是你想象的那样。它可能包含字符串而不是整数。
print repr(your_array)并向我们展示结果。 -
数组([[[ 0, 0, 0], [ 0, 0, 0], [ 0, 0, 0]], [[ 2, 2, 2], [255, 255 , 255], [244, 244, 244], ..., [[ 0, 0, 0], [ 0, 0, 0], [ 0, 0, 0], ..., [ 0, 0, 0], [ 0, 0, 0], [ 0, 0, 0]]], dtype=uint8)