文章目录
当函数获取正确类型的参数,但类型的值不正确时,Python 中就会发生值错误。 当 NumPy 数组有多个元素时,会发生另一种错误,从而导致该错误。
本文将讨论语法错误以及如何修复它。
解决Python中 ValueError: only 2 non-keyword arguments accepted 错误
在下面的示例中,NumPy 数组是二维的,但之后我们也混合了一个一维数组。 Python 将此识别为不均匀形状,表明数组的结构发生波动,因此 Python 会引发值错误。
代码示例:
import numpy as np
print(np.array([1, 'English'], [2, 'Spanish'], [3, 'German'], dtype=object ))
输出:
ValueError: only 2 non-keyword arguments accepted
数组应具有相同的元素,可以通过创建具有相同维度的数组来解决此错误。
代码示例
import numpy as np
print(np.array([[1, 'English'], [2, 'Spanish'], [3, 'German']], dtype=object))
输出:
[[1 'English']
[2 'Spanish']
[3 'German']]
解决 ValueError: setting an array element with a sequence
使用 NumPy 库创建多维数组有时会遇到 ValueError。 当设置一个顺序错误的数组元素时会发生这种情况。
代码示例:
import numpy
arrayeven = [2, 4, 6, [8, [10, 12]]]
np_array = numpy.array(arrayeven, dtype=int)
输出:
ValueError: setting an array element with a sequence
我们可以使用支持所有数据类型的数据类型(通用数据类型)来解决这个错误。 在下面的示例中,我们使用 dtype=object
而不是 dtype=int
。
代码示例:
import numpy
arrayeven = [2, 4, 6, [8, [10, 12]]]
np_array = numpy.array(arrayeven, dtype=object)
print(np_array)
输出:
[2 4 6 list([8, [10, 12]])]
匹配的数组和值的默认数据类型
在下面的示例中,由于将数组分配为接受字符串数据的数组的元素而发生错误。
代码示例:
import numpy
array = ["meeting", "the","is", "at", "10pm"]
newarray = numpy.array(array, dtype=str)
newarray[1] = ["the","meeting", "is", "at", "10pm"]
print(newarray)
输出:
ValueError: setting an array element with a sequence
我们可以通过匹配值和数组的数据类型来解决这个错误。 我们可以纠正这个问题并将该值分配为数组元素。
代码示例:
import numpy
array = ["meeting", "the","is", "at", "10pm"]
newarray = numpy.array(array, dtype=str)
Variable = ["the","meeting", "is", "at", "10pm"]
if newarray.dtype == type(Variable):
newarray[1] = Variable
else:
print(" Type of value and newarray is not same ")
print(newarray)
输出:
Type of value and newarray is not same
['meeting' 'the' 'is' 'at' '10pm']
使用 NumPy 库,我们有时会遇到值错误。 当函数可能传递正确的参数类型,但该类型的值不正确时,就会发生这种情况。
我们可以使用上述方法修复数组值错误。