python - 按值对 Numpy 数组元素进行排序

标签 python arrays numpy

假设我有一个 NxN 值数组,我想通过对这些值进行分箱来对它们进行排序,并且对于每个分箱,返回原始值的副本,仅保留相应的值,并将所有其他值替换为零。例如,如果我有:

x = np.array([[1.1,2.2],[1.2,3.2]])
bins = np.array([1,2,3,4])

然后我想要:

output = [[[1.1,0.0],[1.2,0.0]],[[0.0,2.2],[0.0,0.0]],[[0.0,0.0],[0.0,3.2]]]

到目前为止我所拥有的:

Z = np.shape(x)[0]
Y = np.shape(x)[1]
X = np.shape(bins)[0]-1
output = np.broadcast_to(x, (X,Y,Z))

这将创建一个数组,其中包含每个 bin 的原始副本。然后我想我会使用 np.where 将除正确值之外的所有值设置为 0.0,但是当我尝试思考如何准确地编写它时,我的大脑一片空白,而且我也不确定这是否是最好的方法。

如有任何建议,我们将不胜感激,谢谢。

最佳答案

有点脏,但你可以试试这个

outputs = np.zeros(((len(bins)-1,) + x.shape))

for bin_idx, (inf, sup) in enumerate(zip(bins[:-1:1], bins[1::1])):
    outputs[bin_idx][np.where(np.logical_and(x>inf, x<sup))] = x[np.where(np.logical_and(x>inf, x<sup))]

关于python - 按值对 Numpy 数组元素进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52880161/

相关文章:

python - 根据授权值舍入 python 数据框列的值

python - 如何通过 Google BigQuery 的 Python 客户端库设置现有表过期?

python - TypeError : write() argument must be str, 不是字节(Python 3 与 Python 2)

php - 从 2 个查询返回同一正文中的 2 个响应

python - 如何将 3 暗淡的 numpy 数组减少到 2 暗淡

python - 异常相等性检查 - 使用 Numpy Where 查找抛出异常的索引

python - 如何在普通 CGI 中区分 GET 和 POST

javascript - 为什么我的表单中有未定义/隐藏的元素?

java - LibGDX:似乎无法绘制数组中的对象

python - 如何避免使用 numpy.round 进行不正确的舍入?