Python 数组值错误


当函数获取正确类型的参数,但类型的值不正确时,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 库,我们有时会遇到值错误。 当函数可能传递正确的参数类型,但该类型的值不正确时,就会发生这种情况。

我们可以使用上述方法修复数组值错误。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

迹忆客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值