python编程踩坑记录

一、python语法问题
1.关于类的实例化问题
class A(object):
a=1
class B(object):
b1= A()
b2= A()

实例化:
b1_=B()
b2_=B()
我发现b1_和b2_里的b1地址相同,b2也地址相同:
答:b1和b2的赋值需要在init函数下进行

2.numpy高级索引注意事项:

>>>a = np.array([[1,2,3], [4,5,6],[7,8,9]])
>>>a[[0,1,2], [0,1,2]]
array([1, 5, 9])
>>>a[0:3, [0, 1,2]]
array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 9]])
>>>a[:, [0, 1,2]]
array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 9]])

可以看到每个索引如果是不带:或者…的、尺寸一致的数组,那么第一个数组索引得到的切块会按照第二个索引数组内的数分别索引
如果某个索引带:,第一个数组索引得到的切块会按照第二个索引数组进行整个索引

3.numpy用range作索引注意事项
用range类型索引后,会新建一个原数组的拷贝,接下来的处理均不会影响到原数组;但用普通的:索引就不会
例:

import numpy
s=numpy.array([[2,3],[3,4]])
s[0:1][:,[0,1]] = s[0:1][:,[1,0]]  # 该操作可以成功交换数组元素
s[frame_range][:,[0,1]] = s[frame_range][:,[1,0]]  # 该操作不可以交换数组元素

二、matplotlib 作图注意事项

1.当在python环境使用matplotlib画图时报以下错误:

QObject::moveToThread: Current thread (0x55c1a5a149e0) is not the object's thread (0x55c1a5adf670).
Cannot move to target thread (0x55c1a5a149e0)

qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "/home/dq/anaconda2/envs/dq/lib/python3.6/site-packages/cv2/qt/plugins" even though it was found.
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.

Available platform plugins are: xcb, eglfs, linuxfb, minimal, minimalegl, offscreen, vnc, wayland-egl, wayland, wayland-xcomposite-egl, wayland-xcomposite-glx, webgl.


Process finished with exit code 134 (interrupted by signal 6: SIGABRT)

或者:

Failed to enable GUI event loop integration for 'qt5'

解决办法:
加上:

import matplotlib
matplotlib.use("TkAgg")

2.plot图像转numpy

import numpy as np
import matplotlib as plt
import cv2
fig = plt.figure(1)#在画图前加上;1表示编号为1,再次运行这条语句时不会生成新的窗口,如果不填数字就会生成新的窗口

...#画图部分
fig.canvas.draw()
X = np.array(fig.canvas.renderer._renderer)
cv2.imshow('plot', X)
cv2.waitKey(1)

三、Windows下运行
1.当在用git bash 运行sh脚本文件来运行python文件时,没有任何返回直接结束
见以下链接
python修复

当电脑只安装了python3.7时,用python命令默认是调用python3.7,python3命令无法找到。可以找到python的安装路径:
例如C:\Users\Administrator\AppData\Local\Programs\Python\Python37
把python.exe复制一份,并命名为python3.exe
那么python3命令就可以用了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Python编程PDF是一本关于Python编程语言的电子书,它可以通过PDF文件的形式在线阅读或下载。这本书旨在向初学者介绍Python编程语言,并提供了从基础概念到高级技巧的详尽说明和示例代码。 Python作为一种简单易学、功能强大的编程语言,已经成为人们最喜爱的入门语言之一。对于初学者来说,掌握基本的语法和概念是非常重要的。这本Python编程PDF可以帮助读者逐步学习Python的语法、数据类型、循环和条件语句等基础知识。它还提供了许多练习题和实例代码,帮助读者理解和应用所学的知识。 此外,Python编程PDF还介绍了Python的高级特性和库。Python拥有丰富的库和模块,可以用于各种任务,比如数据分析、网络编程和Web开发等。这本书详细介绍了一些流行的Python库,如NumPy、Pandas和Django,以及它们在实际项目中的应用示例。 对于已经有一定Python编程经验的读者来说,这本Python编程PDF也是一本很好的参考书。它深入讲解了一些高级主题,如函数式编程和面向对象编程,并提供了一些实用的技巧和建议,帮助读者更好地利用Python编写高效、可维护的代码。 总之,Python编程PDF是一本综合而详尽的Python编程指南,适合初学者和有经验的程序员。它通过清晰的语言和丰富的示例帮助读者掌握Python的基础知识和高级技巧,并引导读者在实际项目中应用所学的知识。无论是想学习Python编程的新手还是希望提升自己编程技能的读者,这本书都是一个很好的选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值