TypeError: only size-1 arrays can be converted to Python scalars

这篇具有很好参考价值的文章主要介绍了TypeError: only size-1 arrays can be converted to Python scalars。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Traceback (most recent call last):
  File "/home/yjq/socket_test/server2.py", line 22, in <module>
    msg.data = float(np.array(eval(from_client_msg.decode("gbk"))))#先转换为列表,再转为数组
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: only size-1 arrays can be converted to Python scalars

这个错误是因为你试图将一个多元素的NumPy数组直接转换成Python标量值,导致类型错误。问题出在这一行:

python 
msg.data = float(np.array(eval(from_client_msg.decode("gbk"))))

这里你先使用eval()将接收到的字符串转换成了一个Python列表,然后用np.array()转换成NumPy数组。但是在将这个NumPy数组直接转换成float时就错误了,因为float()只能将大小为1的NumPy数组转换为标量,不能处理多个元素的数组。要解决这个问题,你可以:1. 先转换成列表,然后取第一个元素转换为float:

python
data = eval(from_client_msg.decode("gbk")) 
msg.data = float(data[0])

2. 直接从数组中取出第一个元素,然后转换为float:

python
data = np.array(eval(from_client_msg.decode("gbk")))
msg.data = float(data[0])

3. 如果需要数组里的所有元素,可以循环转换:

python
data = np.array(eval(from_client_msg.decode("gbk")))
msg.data = [float(x) for x in data] 

4. 也可以将整个数组赋值给msg.data,根据需要后处理所以,主要是float()不适合直接处理多元素的NumPy数组,需要先转换为标量或其他Python对象文章来源地址https://www.toymoban.com/news/detail-656451.html

到了这里,关于TypeError: only size-1 arrays can be converted to Python scalars的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • TypeError: can‘t convert cuda:0 device type tensor to numpy. Use Tensor.cpu() to copy the tensor to

    在用GPU训练模型时报如下的错误: TypeError: can’t convert cuda:0 device type tensor to numpy. Use Tensor.cpu() to copy the tensor to host memory first. GPU上的tensor张量无法转为numpy格式,那我们把它转到CPU上即可。 方法非常简单,只需在目标张量后面加 .cpu() 即可。 Before: After:

    2024年02月12日
    浏览(40)
  • python异步协程爬虫报错:【TypeError: object int can‘t be used in ‘await‘ expression】探讨

    近日,通过异步协程爬虫抓取rar压缩包文件时,学习运用异步协程来提高效率。但发生如下问题: TypeError: object int can\\\'t be used in \\\'await\\\' expression 研究了好久,发现是在持久化保存时,不能运用整数作为await的参数。  这个错误的原因可能是在async函数中使用了一个整数类型的变

    2024年02月09日
    浏览(38)
  • 【Python】成功解决ValueError: zero-size array to reduction operation minimum which has no identity

    【Python】成功解决ValueError: zero-size array to reduction operation minimum which has no identity 🌈 个人主页:高斯小哥 🔥 高质量专栏:Matplotlib之旅:零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程👈 希望得到您的订阅和支持~ 💡 创作高质量博文(平均质量分9

    2024年04月16日
    浏览(55)
  • python报错ValueError: zero-size array to reduction operation maximum which has no identity,情况之一分析与解决

    在boston房价数据预测练习项目中,发现报错如下: ValueError: zero-size array to reduction operation maximum which has no identity 此报错所对应行为 于是网上查找对应错误解决方法,有的博主的numpy数组处array.max(axis=0)、array.min(axis=0),的确有数组为0的情况,采纳其建议加入assert array.size !=

    2024年02月08日
    浏览(31)
  • [vue warn]: inject() can only be used inside setup()

    问题背景:最近在用vue3写管理系统的登录功能的时候,在封装axios之后浏览器控制台出现警告: [Vue warn]: inject() can only be used inside setup() or functional components. 原因:因为在vue3中useRouter,useStore要放在setup中引入,我们在封装axios文件中不能直接引入。 1.bug提示:  2.然后我们就

    2024年02月05日
    浏览(47)
  • Unity 解决 “... can only be called from the main thread” 问题

    有些属性或方法只能在主线程中调用,如 .gameObject 、 Instantiate() 等。这是 Unity 设计时的一个缺陷(为了保证线程安全),多年来一直没有修正,或者说官方懒得弄。 以 Instantiate() 为例,在非主线程调用时,报错大概如下所示。其他属性或方法的报错也大体相同。 注:应注意

    2024年01月17日
    浏览(58)
  • getUserProfile:fail can only be invoked by user TAP gesture

    获取用户信息失败,error: getUserProfile:fail can only be invoked by user TAP gesture 它的大概意思就是: 该接口必须用户点击才可以调通 官方获取用户信息调整通告:小程序登录、用户信息相关接口调整说明 | 微信开放社区 wx.getUserProfile(Object object) 所以改造下方法,让用户先点击 前端

    2024年02月11日
    浏览(40)
  • ERROR: There can be only one Game target per project.

    UATHelper: Packaging (Windows (64-bit)): ERROR: There can be only one Game target per project. D:dockIntermediateSource 把旧的文件删去 一般会出现在更改项目名称后 感谢 There can be only one Game target per project - Development Discussion / Content Creation - Unreal Engine ForumsThere can be only one Game target per project - 

    2024年02月08日
    浏览(46)
  • [Exceptions]hive Cannot convert column xx from void to array<int>.

    写hive sql的时候,用null给复杂类型的列赋值了。null不能转成对应的复杂类型而导致的报错。比如我这次要做的是c、b表有复杂类型这一列。a表没有。要把a表数据导入c,用的 insert into table c select a.*,null from a .就会报错。null这个值,在读取数据的时候,没有值会返回null,用来

    2024年02月11日
    浏览(48)
  • File chooser dialog can only be shown with a user activation.

    使用vue开发时,通过ref通过“this.refs.[name].$el.click()”触发按钮时提示“File chooser dialog can only be shown with a user activation.”,按钮不能触发,网上解决办法是“dispatchEvent(new MouseEvent(\\\'click\\\'))”代替“$el.click()”,在我所在的场景不生效,所以就在要出发按钮组件上加了一个id,按

    2024年01月23日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包