微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何将python数组分配给gnuplot数组?

如何解决如何将python数组分配给gnuplot数组?

我有以下代码,试图将python数组A分配给gnuplot数组B,但是,我无法遍历python数组。我该怎么做?

import subprocess

proc = subprocess.Popen(['gnuplot','-p'],shell=True,stdin=subprocess.PIPE,encoding='utf8'
                        )

A = [1,2,3]
proc.communicate(
f"""
array B[3]
do for [i=1:3] {{ B[i] = {A[2]} }}
print B
"""
)

上面的程序打印:[3,3,3]。我希望打印[1,3]。 (基本上,我必须从python中的gnuplot访问i)

Gnuplot版本5.2补丁程序级别2

Python版本3.6.9

解决方法

这可以解决问题

import subprocess

proc = subprocess.Popen(['gnuplot','-p'],shell=True,stdin=subprocess.PIPE,encoding='utf8'
                        )

A = [1,2,3]

# create the array
proc.stdin.write( 'array B[{}]; print B;'.format( len(A) ) )

# send the data piece by piece
for i,x in enumerate(A):
    proc.stdin.write( 'B[{}] = {};'.format( i+1,x ) )

# print the array in gnuplot and finish the process
proc.communicate(
f"""
print B
"""
)

问题在于数据位于两个不同的环境中,没有什么大的gnuplot可以从python获取数据,要与它们进行通信,您可以使用proc.communicate将消息发送到gnuplot,但还要等待直到该过程结束为止,这会使用gnuplot关闭管道,并且不允许我们使用proc.stdin.write来发送所需的所有数据。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。