我有一个形状为x,y,z的numpy数组,它表示x由y的z个矩阵。我可以对每个矩阵进行切片,然后使用带有百分位的clip过滤异常值:
mx = array[:, :, 0] # taking the first matrix
filtered_mx = np.clip(mx, np.percentile(mx, 1), np.percentile(mx, 99))
是否有某种有效的方法可以一次执行一次而不做一个切片?
最佳答案
您可以将数组传递给np.clip
,因此在z
的mx
维度上可能会有不同的限制:
import numpy as np
# Create random mx
x, y, z = 10, 11, 12
mx = np.random.random((x, y, z))
# Calculate the percentiles across the x and y dimension
perc01 = np.percentile(mx, 1, axis=(0, 1), keepdims=True)
perc99 = np.percentile(mx, 99, axis=(0, 1), keepdims=True)
# Clip array with different limits across the z dimension
filtered_mx = np.clip(mx, a_min=perc01, a_max=perc99)
关于python - 使用每个切片的百分比过滤多维numpy数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59921404/