如何根据条件使numpy数组中的某些值为空? 我不明白为什么我最终得到的是0,而不是不满足条件的null或空值。。。b是用0和1值填充的numpy数组,c是另一个完全填充的numpy数组。所有阵列均为71x71x166
a = np.empty(((71,71,166)))
d = np.empty(((71,71,166)))
for indexes, value in np.ndenumerate(b):
i,j,k = indexes
a[i,j,k] = np.where(b[i,j,k] == 1, c[i,j,k], d[i,j,k])
我想最终得到一个数组,它只有满足条件的值,其他地方都是空的,但不改变它的形状
需要澄清的全部问题:
我从一个浮点数组开始,它的形状是(71,71166)
我根据应用于float数组的截止值创建了一个int数组,基本上创建了许多bin,大致在数组中标记出10个区域,0的值介于
我想要得到的是一个形状为(71,71166)的数组,它的平均值在特定的数组方向(假设垂直方向,如果你认为一个3D数组是3D立方体)的某个“bin”…
所以我试图遍历“bins”b==1,b==2等,在满足条件的地方对浮点进行采样,但在其他地方为空,这样我就可以取平均值,然后在循环结束时重新组合成一个数组….
不知道我是不是在表达自己的意思。我使用的是np.where和索引,当我尝试在没有效率的情况下进行索引时,会不断地出现错误。
np.empty
有时用0填充数组;未定义empty()
数组的内容是什么,因此0完全有效。例如,请改为:但是考虑使用numpy的强度,不要在数组上迭代:
(由于
b
是0或1,我排除了显式比较b == 1
。)您甚至可以考虑使用masked array代替:
对于您的问题:“如何根据条件使numpy数组中的某些值为空”(将null替换为mask就完成了)。
举个例子:
当
mask
为0时,数据将被设置为nan
。当然,您可以使用任何类型的条件,或者对b中的不同值执行不同的操作要清除除特定存储箱之外的所有内容,请尝试以下操作:
所以,要复制特定容器中的所有内容:
要获得垃圾箱中所有东西的平均值:
因此,这也许可以满足您的需要(其中bins是bin值的列表):
相关问题 更多 >
编程相关推荐