指针的目的是保存特定变量的地址.那么下面代码的内存结构应如下所示:
int a = 5;
int *b = &a;
Run Code Online (Sandbox Code Playgroud)
......内存地址......值 a ... 0x000002
................... 5
b ... 0x000010 ..... .............. 0x000002
好的.然后假设现在我想保存指针*b的地址.然后我们通常定义一个双指针,**c,as
int a = 5;
int *b = &a;
int **c = &b;
Run Code Online (Sandbox Code Playgroud)
然后内存结构看起来像:
......内存地址......值 a ... 0x000002
................... 5
b ... 0x000010 ..... ............... 0x000002
c ... 0x000020 ................... 0x000010
所以**c指的是*b的地址.
现在我的问题是,为什么这种类型的代码,
int a = 5;
int *b = &a;
int *c = &b;
Run Code Online (Sandbox Code Playgroud)
产生警告?
如果指针的目的只是为了保存内存地址,我认为如果我们要保存的地址是指变量,指针,双指针等,那么应该没有层次结构,所以下面的代码类型应该是有效.
int a = 5;
int *b = &a;
int *c = &b; …Run Code Online (Sandbox Code Playgroud) 我只是用两种方式计算了相同的数字,但是在numpy中,它会出错
[[ 0.910221324013388510820732335560023784637451171875]]
[[-0.9102213240133882887761274105287156999111175537109375]]
Run Code Online (Sandbox Code Playgroud)
这个数字与e ^( - 15)相同,但之后有所不同.我该如何处理这个错误?
有没有办法限制浮点精度?
由于我使用这些数字计算指数,即使很小的差异也会导致令人沮丧的错误......
我正在使用ubuntu 14.04和gnuplot-x11,并发现对于希腊字母alpha,
{/ symbol a}会起作用,但这只会显示{/符号a},而不是希腊字母alpha.
我尝试了{\ symbol a}或其他选项,但这不起作用..
我想以gif格式保存matplotlib动画.
我成功地使用代码将动画保存为mp4格式
import matplotlib
matplotlib.use("Agg")
~some codes~
ani = animation.FuncAnimation(fig, draw, update, interval=10, blit=False)
mywriter = animation.FFMpegWriter(fps=60)
ani.save('myanimation.mp4',writer=mywriter)
Run Code Online (Sandbox Code Playgroud)
但如果我将myanimation.mp4更改为gif格式,python会出错
Traceback (most recent call last):
File "C:\Users\Administrator\Desktop\edison\Edison_v4_backup_1\ver5.py", line 164, in <module>
ani.save('demoanimation.gif',writer=mywriter);
File "C:\Python27\lib\site-packages\matplotlib\animation.py", line 718, in save
writer.grab_frame(**savefig_kwargs)
File "C:\Python27\lib\site-packages\matplotlib\animation.py", line 204, in grab_frame
dpi=self.dpi, **savefig_kwargs)
File "C:\Python27\lib\site-packages\matplotlib\figure.py", line 1421, in savefig
self.canvas.print_figure(*args, **kwargs)
File "C:\Python27\lib\site-packages\matplotlib\backend_bases.py", line 2220, in print_figure
**kwargs)
File "C:\Python27\lib\site-packages\matplotlib\backends\backend_agg.py", line 497, in print_raw
renderer._renderer.write_rgba(filename_or_obj)
RuntimeError: Error writing to file
Run Code Online (Sandbox Code Playgroud)
看到我成功保存为mp4格式,我不知道为什么它在保存gif格式时会出错.
我的csv文件看起来
0.0 1
0.1 2
0.2 3
0.3 4
0.5 7
1.0 9
0.0 6
0.1 10
0.2 11
0.3 12
0.5 13
1.0 14
...
Run Code Online (Sandbox Code Playgroud)
我想在x轴上绘制第一列,在第二列绘制y轴.所以我的代码是
import matplotlib.pyplot as plt
from numpy import genfromtxt
data=genfromtxt("test",names=['x','y'])
ax=plt.subplot(111)
ax.plot(data['x'],data['y'])
plt.show()
Run Code Online (Sandbox Code Playgroud)
但这连接图的终点,显示直线, 图http://cfile7.uf.tistory.com/image/24776F37554AD3670CECF8 我想要的就是这张图. 图http://cfile7.uf.tistory.com/image/27372B49554AD4422EBD0F
然后我如何读取数据文件或matplotlib中有任何选项断开线路?
我有一个关于生成器和文件对象的问题。
如果我写代码
def iter(ls):
count=0
for k in ls:
if count==2:
break
count+=1
for k in ls:
yield k
test=[1,2,3,4]
k=iter(test)
for i in k:
print i
Run Code Online (Sandbox Code Playgroud)
然后输出是
1 2 3 4
是的,我可以理解这一点,因为这段代码中的 break 语句不会影响下面的 yield 语句。
但是如果我对文件做类似的事情,在这种情况下,我会创建一个“数据”文件并写入
1
2
3
4
Run Code Online (Sandbox Code Playgroud)
如果我只改变线路
test=[1,2,3,4] ? test=open("data","r")
Run Code Online (Sandbox Code Playgroud)
那么结果是
4
这意味着 break 语句会以某种方式影响,因此包含“yield”的 for 循环中的生成器与之前的情况不同。
这种差异的原因是什么?
对于两个numpy数组a,b
a=[1,2,3] b=[4,5,6]
Run Code Online (Sandbox Code Playgroud)
我想将a的x <2.5数据更改为b.所以我试过了
a[a<2.5]=b
Run Code Online (Sandbox Code Playgroud)
希望是的a=[4,5,3].但这会产生错误
Traceback (most recent call last):
File "<pyshell#3>", line 1, in <module>
a[a<2.5]=b
ValueError: NumPy boolean array indexing assignment cannot assign 3 input values to the 2 output values where the mask is true
Run Code Online (Sandbox Code Playgroud)
问题是什么?
我的程序有gnuplot脚本,它的第一行是
set data s l
Run Code Online (Sandbox Code Playgroud)
但这会产生错误
"cdia.GNUBAND", line 1: unrecognized option - see 'help set'.
Run Code Online (Sandbox Code Playgroud)
我认为这是版本问题,我必须以正确的方式更改"set data s l"命令.我在网上搜索但找不到它..我该如何解决这个问题?
我正在制作一个模拟程序。
我在启动程序之前用python list手动编写一些粒子的初始条件,例如
var1 = [mass_a, velocity_a, velocity_a]
var2 = [mass_b, velocity_b, velocity_b]
...
Run Code Online (Sandbox Code Playgroud)
那么如何更改 for 循环中变量中的数字?我尝试过的事情是
for i in range(2):
print(var+str(i))
Run Code Online (Sandbox Code Playgroud)
但它们不起作用