小编use*_*298的帖子

指针与普通指针的指针

指针的目的是保存特定变量的地址.那么下面代码的内存结构应如下所示:

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)

c pointers

74
推荐指数
11
解决办法
6688
查看次数

如何设置numpy浮点精度?

我只是用两种方式计算了相同的数字,但是在numpy中,它会出错

[[ 0.910221324013388510820732335560023784637451171875]]
[[-0.9102213240133882887761274105287156999111175537109375]]
Run Code Online (Sandbox Code Playgroud)

这个数字与e ^( - 15)相同,但之后有所不同.我该如何处理这个错误?

有没有办法限制浮点精度?

由于我使用这些数字计算指数,即使很小的差异也会导致令人沮丧的错误......

floating-point numpy

14
推荐指数
2
解决办法
3万
查看次数

我如何在gnuplot中包含希腊字母?

我正在使用ubuntu 14.04和gnuplot-x11,并发现对于希腊字母alpha,

{/ symbol a}会起作用,但这只会显示{/符号a},而不是希腊字母alpha.

我尝试了{\ symbol a}或其他选项,但这不起作用..

gnuplot

10
推荐指数
1
解决办法
3万
查看次数

matplotlib在gif错误中保存动画

我想以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格式时会出错.

animation matplotlib gif

8
推荐指数
2
解决办法
2万
查看次数

使用matplotlib从CSV文件绘制数据

我的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中有任何选项断开线路?

python matplotlib

5
推荐指数
1
解决办法
2834
查看次数

Python 生成器和文件对象

我有一个关于生成器和文件对象的问题。

如果我写代码

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 循环中的生成器与之前的情况不同。

这种差异的原因是什么?

python

4
推荐指数
1
解决办法
1041
查看次数

numpy改变元素匹配条件

对于两个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)

问题是什么?

numpy

2
推荐指数
1
解决办法
1885
查看次数

命令"set data s l"上的Gnuplot错误

我的程序有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"命令.我在网上搜索但找不到它..我该如何解决这个问题?

gnuplot

2
推荐指数
1
解决办法
2615
查看次数

Python中如何增加变量名?

我正在制作一个模拟程序。

我在启动程序之前用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)

但它们不起作用

python

0
推荐指数
1
解决办法
2196
查看次数

标签 统计

python ×3

gnuplot ×2

matplotlib ×2

numpy ×2

animation ×1

c ×1

floating-point ×1

gif ×1

pointers ×1