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

我一直在这里尝试建议: 如何将否定元素转换为零而不循环?

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

这是数组(a):

[ [  77.23262142  111.08317492  105.03704946   29.28612695   29.11454024
   10.07763987  -28.43527526  -41.68250773  -60.18250773  -73.61424205
-71.9592605   -74.25815349  -72.67697268  -61.01276604]
[ 346.32487234  346.35439263  332.45955869  305.13299042  253.4706288
 254.19387603  174.91896828  162.73446644  111.50014909   76.9614037
34.36361773  -25.55151142  -47.37254463  -57.63638227  -63.009076
-78.0385963   -56.38361475]
[ 217.45402363  172.89867308  158.19756607  159.74184651  142.31195721
153.54258452  158.28612695  133.56841478  159.88391293  131.50383913
152.97800887   60.40789817   93.2104812    71.13852548    2.02782437
-20.78398375  -52.2692236   -70.02752618  -76.46110552  -79.26184353
-68.36516456]
[ 268.77690186  246.15144061  199.3211823   229.61269522  175.28797197
219.35992769  194.95771367  197.6809609   202.8008871   194.34332252
201.19018599  140.29719706  164.36177271  100.68280592   96.90789817
62.38944799   19.59424503  -20.86700958  -47.14745238  -69.58472176
-74.28767379  -78.07365165  -89.37254463  -92.21387305]
[ 223.63668046  220.66804577  238.79535204  217.27690186  198.98723396
197.60162511  164.90605315  146.49461404  153.33225241  142.98538894
130.63852548  179.9706288   149.22708636  162.03704946  169.48723396
136.3008871   110.43926348   57.75845168   31.57579485  -25.19173283
-24.65667748  -56.25077342  -74.39652987  -78.69173283  -73.14745238
-71.89468486]
[ 205.54442954  236.53335942  220.39682806  210.16989079  163.2307764
177.45955869  161.84516754  161.58501994  186.19941109  174.29535204
201.33225241  211.2805919   193.33040739  206.32671736  190.24369153
160.91158821  164.12007529  125.9411085   113.82487234   83.49461404
35.88760297   -3.9795557   -21.52014611  -42.49800589  -62.73232323
-92.21387305  -78.48509076  -92.409445  ]
[ 269.6606657   280.96509374  273.66620075  272.83040739  252.07579485
263.64406053  272.48723396  257.49645906  240.12561035  250.14406053
241.07579485  237.02597935  226.8507026   206.71417123  173.3507026
174.34332252  188.71601625  149.40974319  191.18834097  153.50937418
113.72155131  131.25291662   89.53889448   68.59609005   41.67727086
10.68280592  -26.89283984  -35.4389653   -53.76368855  -61.76553356
-50.72494316]]

我试过了:

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

提前致谢。

===============>>#1 票数:1 已采纳

首先,当您提出问题时,是否可以张贴一个演示您的问题的实际示例,确实很有帮助。 没有这些,我们只能猜测。

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

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()

如果实际上使用的是数组数组,则使用dtype对象的数组,而不是尝试使用多维数组。 dtype对象数组容易出现所有类型的问题,我通常会尽量避免使用它们。 您可以通过检查如下所示的形状和dtype来判断是否正在使用带有dtype对象的数组:

print array2d.dtype
print array2d.shape
# int32
# (4, 3)

print arrayOfArrays.dtype
print arrayOfArrays.shape
# object
# (4,)

当然,在这种情况下,您可以在外部数组上循环并在每个内部数组上调用clip。

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

===============>>#2 票数:0

尝试仅将负值设置为零:

a[a<0] = 0

  ask by Scott translate from so

未解决问题?本站智能推荐:

1回复

值错误,真值错误,模棱两可的错误

使用此代码时 我得到这个ValueError 如果Ycoord> = Y_west和Xcoord == X_west:ValueError:包含多个元素的数组的真值不明确。 使用a.any()或a.all() 然后我使用上述限制 关于如何保持限制并继续编写文件的
3回复

错误:“运算符/”的模棱两可的重载

我是c语言的新手,以下内容使我有些悲伤: 然后,我使用python和scipy使用gcc进行编译,将未初始化的所有内容传递给它,但是我知道问题出在代码的1.0 / h_x部分。 如果我使用python / gcc编译基本的c语句,那么它可以工作,因此我没有python / gcc的问题
1回复

python数组的真值..模棱两可的错误

我正在尝试使用numpy乘以2个向量并进行比较,出于某种原因它给了我错误..数据来自我发现的CSV文件 尝试对数组进行索引时,包含多个元素的数组的真值不明确 以及更多这种类型的情况,但实际上与我的情况不同。我的代码: 它给我错误: 我只是想将一个向量与相同大小的向量相
1回复

数组上Lambda表达的模棱两可的评估

我想使用一个lambda ,如果x等于零,则将其加到x。 我尝试了以下表达式: 这些表达式中的每一个都返回以下错误: 我对map()和numpy.apply_along_axis()理解是,它将采用一些函数并将其应用于数组的每个值。 从错误看来,lambda被评估为x=arr
1回复

将numpy.where()与or语句一起使用会给我返回有关模棱两可的值的错误

我正在尝试从一个项目的多个数组中选择值,但是与布尔值一起出现问题。 我有两个名为“ zdat”和“ photdat”的数据文件,每个文件都有5000多个值。 我需要使用两者的质量标志将它们简化为一个新的数组。 对于zdat文件,我需要将标志设置为3或4,因此我以为可以将其插入numpy.w
2回复

系列的真值是模棱两可的。 对np.argmax使用a.empty,a.bool(),a.item(),a.any()或a.all()

我收到错误: 即便如此,我也没有评估任何声明。 当我试图传递这个时,错误就出现了 以前将结果传递给的地方 结果[2]是一系列浮点数。 为什么会提出这个错误,我无法理解,有什么想法吗? 如果需要可以提供全部功能。 编辑:填充结果的函数: 更新:打印结
1回复

从列表中删除作为字典值的值时,ValueError真值模棱两可

我测试了这段代码: 我得到以下输出: 因此,remove()可以从字典的值列表中完美删除列表。 我已经实现了类似的结构,其中键是启发式值, 值是列表列表。 内部列表由一个numpy数组和一个字符串组成。 例如: 现在我试图从字典中删除这样的列表,并得到
3回复

在Python中用空格替换nan

以下是我的数据框: 我想用Blanks替换nan。 试过下面的代码,但它不起作用。 请帮助我了解我哪里出错了,我该怎样才能解决问题。
2回复

如何将数组中的所有负数替换为零[重复]

这个问题在这里已有答案: 替换大于某些值 6个答案 的Python NumPy Array的所有元素 如果我有一个NxN numpy数组并且如果有任何位置的负数,是否有一个简单而快速的方法我可以用0替换该数字? 就像是
3回复

如何使用布尔掩码在pandas DataFrame中用nan替换'any strings'?

我有一个227x4 DataFrame,国家名称和数值要清理(争吵?)。 这是DataFrame的抽象: 如何在不触及国家/地区名称的情况下在所有列中使用np.nan替换字符串值? 我尝试使用布尔掩码: 我看了几个与我有关的问题( [1] , [2] , [3] ,