调试Bug
1. 数组初始化
A = np.zeros(n_symb)
初始化的数组,当计算时,结果的值是复数,但是赋值给A的时候,却是实数,需要如下初始化
np.zeros(n_symb, dtype = complex)
定义初始值记为复数类型,这样赋值就正常
2. 获取数组行列的大小
1.普通数组,以二维数组为例:
# 行的大小,row = len(arr)
# 列的大小,col = len(arr[0])
其他维度推理都是 len(arr[i])
2.numpy形成的数组,这个时候就要用到shape函数
一维长度:arr.shape[0]
二维长度:arr.shape[1]
以此类推:arr.shape[i]
3. python中 numpy转list list 转numpy
list to numpy
import numpy as np
a=[1,2]
b=np.array(a)
import numpy as np
a=np.zero(1,1)
a.tolist()
4. 数组,字典
通常使用数组表示多维向量会比较好,而不是使用字典来分别索引各个维度
可以表示为
a[0][3]
索引到对应的元素
单维向量可以转换成一维向量,来代入别的函数,方便后续循环
slot_re = dl_slot_re.reshape((1, n_re_in_slot))
这样,代入下一个函数,slot_re 的维度是 1 * n_re_in_slot的ndarray,而dl_slot_re则是n_re_in_slot的array
5. 画图不响应
首先,
import matplotlib
matplotlib.use('agg')
可以让前台不出图,节省资源,从而可以画很多图而不内存溢出,如果调试状态,需要出图时,则需要打开他
另外
fig = plt.figure(figsize=(24, 8))
会导致调试状态下,figure未响应,需要改为
plt.figure(figsize=(24, 8))
6. 插值
import numpy as np
from scipy import interpolate
import pylab as pl
x=np.linspace(0,10,11)
y=np.sin(x)
xnew=np.linspace(0,10,101)
pl.plot(x,y,"ro")
for kind in ["nearest","zero","slinear","quadratic","cubic"]:
f=interpolate.interp1d(x,y,kind=kind)
# ‘slinear’, ‘quadratic’ and ‘cubic’ refer to a spline interpolation of first, second or third order)
ynew=f(xnew)
pl.plot(xnew,ynew,label=str(kind))
pl.legend(loc="lower right")
pl.show()
7. 数组
Numpy的主要数据类型是ndarray,即多维数组。它有以下几个属性:
ndarray.ndim:数组的维数
ndarray.shape:数组每一维的大小
ndarray.size:数组中全部元素的数量
ndarray.dtype:数组中元素的类型(numpy.int32, numpy.int16, and numpy.float64等)
ndarray.itemsize:每个元素占几个字节
np.fliplr,输入参数至少是2维数组
8 Pycharm单步调试时没有响应的问题
在使用Pycharm调试程序时,发现运行不报错,但是加断点调试程序时,显示
Backend Qt5Agg is interactive backend. Turning interactive mode on. 而且不能继续调试。
解决办法 :
File
Settings
Build,Exrcution
Python Debugger
Genent compatible这个选项打勾,然后就可以使用了。
9. 保存矩阵到文件
np.savetxt('my_matix_1.txt',CeType1WienerCoeff[0,:,:],fmt='%f',delimiter=', ',newline='\r')
10. 界面上插入使用图片
使用qrc文件
qrc文件本身是类似xml格式的文件,可以使用文本编辑
<!DOCTYPE RCC>
<RCC version="1.0">
<qresource>
<file alias="R-C.png">R-C.png</file>
</qresource>
</RCC>
目录使用相对路径下的同级目录,将其编译成py文件后,从界面调用puUIC生成的py中,即可import他
pyrcc5.exe -o image.py .\image.qrc
如果不生成,则自动生成的界面py中import不到该图标
11. PyUIC时出现SyntaxError:invalid syntax
很有可能是在填写PyUIC路径的时候填的是python的路径(在参数位置应填写python命令)
填写参数的时候却写着shell commands的命令
导致python无法识别这个命令
把命令改成 -m PyQt5.uic.pyuic $FileName$ -o $FileNameWithoutExtension$.py