Python 使用clip时出现不明确错误,将负数替换为零

Python 使用clip时出现不明确错误,将负数替换为零,python,numpy,Python,Numpy,我想用零替换多维数组中的负值 我一直在尝试以下建议: 我得到“具有多个元素的数组的真值是模糊错误。” 这是数组(a): 我试过: b = np.clip(a,0, 5000) b = a.clip(min=0) 提前感谢。尝试将负值设置为零: a[a<0] = 0 a[a首先,如果你能发布一个工作示例来演示你的问题,那么当你问问题时,它真的很有帮助。如果没有这个示例,我们就只能猜测了 似乎您使用的是数组数组而不是多维数组。例如: import numpy as np data = np

我想用零替换多维数组中的负值

我一直在尝试以下建议:

我得到“具有多个元素的数组的真值是模糊错误。”

这是数组(a):

我试过:

b = np.clip(a,0, 5000)
b = a.clip(min=0)

提前感谢。

尝试将负值设置为零:

a[a<0] = 0

a[a首先,如果你能发布一个工作示例来演示你的问题,那么当你问问题时,它真的很有帮助。如果没有这个示例,我们就只能猜测了

似乎您使用的是数组数组而不是多维数组。例如:

import numpy as np
data = np.arange(3)

# Make an array of arrays
arrayOfArrays = np.empty(4, dtype=object)
arrayOfArrays.fill(data)
print arrayOfArrays
# [[0 1 2] [0 1 2] [0 1 2] [0 1 2]]

# Make a 2d array
array2d = np.empty((4, 3), dtype=int)
array2d[:] = data
print array2d
# [[0 1 2]
#  [0 1 2]
#  [0 1 2]
#  [0 1 2]]

# You can clip an ndarray of any dimenssion
array2d.clip(1)

# But clipping an array of arrays gives the error you describe
arrayOfArrays.clip(1)
# ValueError                                
# Traceback (most recent call last) <module>()
#      17 
#      18 # This will fail
#
# ---> 19 arrayOfArrays.clip(1)
#
# ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
当然,在这种情况下,您可以在外部数组上循环,并在每个内部数组上调用clip

for i in range(len(arrayOfArrays)):
    arrayOfArrays[i].clip(1)

我认为这是一个数组的事实,而不仅仅是一个数组,可能意味着答案必须稍微改变。你的意思是改变数组的问题吗?我的意思是,你链接到的问题是一个一维数组,而你有一个二维数组。因此,他的案例的答案需要修改,以适用于r你的情况。(没有numpy我不能说以什么方式)什么东西不适合
b=np.clip(a,0,5000)
a=np.random((5,6,7,8))-0.5;b=a.clip(min=0)
对我来说效果很好…谢谢,很好的解释,你给了我很多选择,也给了我很好的建议。我一直在用我正在做的事情来对付阵列阵列。我必须学会在将来更好地避免。现在,我使用了你最后的建议并建立了一个循环。很抱歉,没有起作用,我遇到了相同的错误,请参阅上面的答案。谢谢
print array2d.dtype
print array2d.shape
# int32
# (4, 3)

print arrayOfArrays.dtype
print arrayOfArrays.shape
# object
# (4,)
for i in range(len(arrayOfArrays)):
    arrayOfArrays[i].clip(1)