我有一个numpy数组,它是一个一维数组的一维数组的零维数组。它看起来像这样:
第一个月
我试图过滤掉所有包含值2的零维数组,所以所有的[2]都应该被删除。问题是我需要保持数组的整体结构不变。结果应该是这样的:arr = [([[1], [0], [0]]), ([[0]]), ([0], [1]])]
个
我会很感激任何帮助!我也想知道是否有好的方法来查看一个.npy文件或检查作为原始数组打印超级丑陋,我不能想出一个好办法来查看这个文件在CLI.谢谢!
我是numpy的新手,我不能让它与一般的numpy过滤函数一起工作,比如:np.where()
或arr = arr[cond(arr)]
可能是因为嵌套结构
我尝试使用for循环,但无法将结果转换为原始数组
mask = (arr[0] != [2])
result = []
for i in arr:
filtered_arr = arr[0][mask]
result.append(filtered_arr)
result = np.array(result, dtype=object)`
字符串
这将输出一个类似于以下的数组:[([1, 0, 0]), ([0]), ([0, 1])]
个
这几乎是我想要的,但不完全是
2条答案
按热度按时间wa7juj8i1#
您当前的
arr
是由不同形状的 numpy 数组组成的容器/列表,如[[(534, 1), (426, 1), (502, 1), (602, 1), (190, 1), (458, 1) ....]
(使用print([a.shape for a in arr])
检查)。更改数组的形状,使其成为1行x多列,可以将您从垂直冗长的数组视图中释放出来,并切换到更紧凑的宽视图。但如果不允许更改形状,请过滤出列值为
2
的行,如下所示:字符串
ctzwtxfj2#
当加载文件并使用
allow_pickle
加载时,我看到一个包含34个元素的对象dtype数组:字符串
看起来所有元素本身都是int dtype数组,具有不同的(n,1)形状:
型
实际上,它是一个2d数组列表。
型
每个数组必须单独处理。要查找
arr[0]
中不包含2的所有元素:型
或者注意在第二个调光时进行遮罩:
型
像这样的数组是很笨拙的,因为每个数字都在单独的一行上。
未筛选和已筛选数组的最后20行:
型
数组的过滤形状:
型