鱼C论坛

 找回密码
 立即注册
查看: 2681|回复: 12

[已解决]一段简单的python改写成c语言

[复制链接]
发表于 2021-9-3 14:39:01 | 显示全部楼层 |阅读模式
30鱼币
本帖最后由 妖娆乌龙茶 于 2021-9-3 14:39 编辑

软件的环境是c语言,但只有python的程序。本人完全不会c语言 ,求助改写成c语言。
就是不会这个beta函数用c语言怎么写
import matplotlib.pyplot as plt
import numpy as np
from scipy import stats
from matplotlib import style
style.use('ggplot')
params=[0.5,1,2,3]
x=np.linspace(0,1,100)
f,ax=plt.subplots(len(params),len(params),sharex=True, sharey=True)
for i in range(4):
    for j in range(4):
         alpha=params[i]
         beta=params[j]
         pdf=stats.beta(alpha,beta).pdf(x)
         ax[i,j].plot(x,pdf)
         ax[i,j].plot(0,0,label='alpha={:3.2f}\nbeta={:3.2f}'.format(alpha,beta),alpha=0)
         plt.setp(ax[i,j],xticks=[0.0,0.2,0.4,0.6,0.8,1.0], yticks=[0,2,4,6,8,10])
         ax[i,j].legend(fontsize=10)
ax[3,0].set_xlabel('theta',fontsize=16)
ax[0,0].set_ylabel('pdf(theta)',fontsize=16)
plt.suptitle('Beta PDF',fontsize=16)
plt.tight_layout()
plt.show()
最佳答案
2021-9-3 14:39:02
这算改成了C语言吗?^_^
#include <stdio.h>
#include <Python.h>

int main(void) {
    const char *code = "import matplotlib.pyplot as plt\n"
        "import numpy as np\n"
        "from scipy import stats\n"
        "from matplotlib import style\n"
        "style.use('ggplot')\n"
        "params=[0.5,1,2,3]\n"
        "x=np.linspace(0,1,100)\n"
        "f,ax=plt.subplots(len(params),len(params),sharex=True, sharey=True)\n"
        "for i in range(4):\n"
        "    for j in range(4):\n"
        "         alpha=params[i]\n"
        "         beta=params[j]\n"
        "         pdf=stats.beta(alpha,beta).pdf(x)\n"
        "         ax[i,j].plot(x,pdf)\n"
        "         ax[i,j].plot(0,0,label='alpha={:3.2f}\\nbeta={:3.2f}'.format(alpha,beta),alpha=0)\n"
        "         plt.setp(ax[i,j],xticks=[0.0,0.2,0.4,0.6,0.8,1.0], yticks=[0,2,4,6,8,10])\n"
        "         ax[i,j].legend(fontsize=10)\n"
        "ax[3,0].set_xlabel('theta',fontsize=16)\n"
        "ax[0,0].set_ylabel('pdf(theta)',fontsize=16)\n"
        "plt.suptitle('Beta PDF',fontsize=16)\n"
        "plt.tight_layout()\n"
        "plt.show()";
    Py_Initialize();
    PyRun_SimpleString(code);
    Py_Finalize();
    return 0;
}

最佳答案

查看完整内容

这算改成了C语言吗?^_^
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-9-3 14:39:02 | 显示全部楼层    本楼为最佳答案   
这算改成了C语言吗?^_^
#include <stdio.h>
#include <Python.h>

int main(void) {
    const char *code = "import matplotlib.pyplot as plt\n"
        "import numpy as np\n"
        "from scipy import stats\n"
        "from matplotlib import style\n"
        "style.use('ggplot')\n"
        "params=[0.5,1,2,3]\n"
        "x=np.linspace(0,1,100)\n"
        "f,ax=plt.subplots(len(params),len(params),sharex=True, sharey=True)\n"
        "for i in range(4):\n"
        "    for j in range(4):\n"
        "         alpha=params[i]\n"
        "         beta=params[j]\n"
        "         pdf=stats.beta(alpha,beta).pdf(x)\n"
        "         ax[i,j].plot(x,pdf)\n"
        "         ax[i,j].plot(0,0,label='alpha={:3.2f}\\nbeta={:3.2f}'.format(alpha,beta),alpha=0)\n"
        "         plt.setp(ax[i,j],xticks=[0.0,0.2,0.4,0.6,0.8,1.0], yticks=[0,2,4,6,8,10])\n"
        "         ax[i,j].legend(fontsize=10)\n"
        "ax[3,0].set_xlabel('theta',fontsize=16)\n"
        "ax[0,0].set_ylabel('pdf(theta)',fontsize=16)\n"
        "plt.suptitle('Beta PDF',fontsize=16)\n"
        "plt.tight_layout()\n"
        "plt.show()";
    Py_Initialize();
    PyRun_SimpleString(code);
    Py_Finalize();
    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-9-3 15:44:56 | 显示全部楼层
既然你不会C语言,为什么要把这个代码改成C语言?
既然你不会C语言,怎么知道把这个代码改成C语言这件事是不是合适?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-9-3 15:48:24 | 显示全部楼层
改,当然是完全可以改,只是没有合适的理由的话,这么做不值得
因为你要把底层函数全写一遍,这个工作量可不小
所以,你需要有必须这样做的理由
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-9-3 16:12:56 | 显示全部楼层
python比c好用就是因为他底层库多,你现在调了很多库函数,用C语言改的话还要自己去写你调用的函数的功能,这工作量很大,一个资深的程序员没有类似的资料情况下少说也得写3天,应该没人为了你这30鱼币给你改的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-9-3 17:54:27 | 显示全部楼层
人造人 发表于 2021-9-3 15:44
既然你不会C语言,为什么要把这个代码改成C语言?
既然你不会C语言,怎么知道把这个代码改成C语言这件事是 ...

用的模拟软件默认所接受的解释程序就是c, 用python要改我这个模拟的环境,这是我模拟大工作里的一个小部分,不了解嘛,所以问问。谢谢啦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-9-3 17:57:10 | 显示全部楼层
不大不小甲鱼 发表于 2021-9-3 16:12
python比c好用就是因为他底层库多,你现在调了很多库函数,用C语言改的话还要自己去写你调用的函数的功能, ...

原来如此,那我放弃了,谢谢啦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-9-4 01:14:03 | 显示全部楼层
直接用c调用Python吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-9-4 16:02:42 | 显示全部楼层
wjp 发表于 2021-9-4 01:14
直接用c调用Python吧

只能Python调用C吧?新手,不太了解。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-9-4 17:16:31 | 显示全部楼层
Asss-whom 发表于 2021-9-4 16:02
只能Python调用C吧?新手,不太了解。
#include <stdio.h>
#include <Python.h>

int main(void) {
    const char *code = "import random\n"
        "l = []\n"
        "for i in range(10):\n"
        "   l.append(random.randint(1, 100))\n"
        "   if i == 5:\n"
        "       l[i] = 0\n"
        "print(l)";
    Py_Initialize();
    PyRun_SimpleString(code);
    PyRun_SimpleString("l[5] = 1");
    PyRun_SimpleString("print(l)");
    Py_Finalize();
    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-9-5 08:20:47 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-9-6 08:32:49 | 显示全部楼层
人造人 发表于 2021-9-4 17:24
这算改成了C语言吗?^_^

这还是调用python解释器吧,表面上是改完了,但是只改了个外表,本质上还是跑的python,还是要看应用场景
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-9-6 10:33:37 | 显示全部楼层
不大不小甲鱼 发表于 2021-9-6 08:32
这还是调用python解释器吧,表面上是改完了,但是只改了个外表,本质上还是跑的python,还是要看应用场景

对,调用的 python 解释器
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-22 03:33

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表