You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现支持任意维度的Numpy数组操作:负数置0非负数求平方

解决方案

方法1:单行简洁实现(推荐)

直接用np.where即可一步完成,天然支持任意维度的numpy数组:

import numpy as np

# 1维示例
arr = np.array([-2, 5, 2, -1])
result = np.where(arr < 0, 0, arr ** 2)
print(result) # 输出 [ 0 25  4  0]

# 2维示例,验证多维度支持
arr_2d = np.array([[-1, 3, -5], [2, -4, 6]])
result_2d = np.where(arr_2d < 0, 0, arr_2d **2)
print(result_2d)
# 输出
# [[ 0  9  0]
#  [ 4  0 36]]

方法2:基于原有思路修改

原有代码报错的原因是:input[input >= 0]是筛选出的符合条件的子集(形状和完整数组不一致),右侧input*input是完整数组,两边形状不匹配才会报错。
你已经把负数全部设为0了,直接对整个数组做平方运算即可,0平方后还是0,完全符合需求:

arr = np.array([-2, 5, 2, -1])
arr[arr < 0] = 0
result = arr ** 2
print(result) # 输出 [ 0 25  4  0]

方法3:更精简的逻辑等价实现

可以用np.maximum先把所有小于0的数替换为0,再整体平方,代码更短:

result = np.maximum(arr, 0) ** 2

以上所有方法都兼容任意维度的numpy数组输入,不需要额外修改逻辑。

内容的提问来源于stack exchange,提问作者ethan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.12 17:54:03