妖娆乌龙茶 发表于 2021-9-3 14:39:01

一段简单的python改写成c语言

本帖最后由 妖娆乌龙茶 于 2021-9-3 14:39 编辑

软件的环境是c语言,但只有python的程序。本人完全不会c语言{:10_266:} ,求助改写成c语言。
就是不会这个beta函数用c语言怎么写

import matplotlib.pyplot as plt
import numpy as np
from scipy import stats
from matplotlib import style
style.use('ggplot')
params=
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
         beta=params
         pdf=stats.beta(alpha,beta).pdf(x)
         ax.plot(x,pdf)
         ax.plot(0,0,label='alpha={:3.2f}\nbeta={:3.2f}'.format(alpha,beta),alpha=0)
         plt.setp(ax,xticks=, yticks=)
         ax.legend(fontsize=10)
ax.set_xlabel('theta',fontsize=16)
ax.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=\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\n"
      "         beta=params\n"
      "         pdf=stats.beta(alpha,beta).pdf(x)\n"
      "         ax.plot(x,pdf)\n"
      "         ax.plot(0,0,label='alpha={:3.2f}\\nbeta={:3.2f}'.format(alpha,beta),alpha=0)\n"
      "         plt.setp(ax,xticks=, yticks=)\n"
      "         ax.legend(fontsize=10)\n"
      "ax.set_xlabel('theta',fontsize=16)\n"
      "ax.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;
}

人造人 发表于 2021-9-3 15:44:56

既然你不会C语言,为什么要把这个代码改成C语言?
既然你不会C语言,怎么知道把这个代码改成C语言这件事是不是合适?

人造人 发表于 2021-9-3 15:48:24

改,当然是完全可以改,只是没有合适的理由的话,这么做不值得
因为你要把底层函数全写一遍,这个工作量可不小
所以,你需要有必须这样做的理由

不大不小甲鱼 发表于 2021-9-3 16:12:56

python比c好用就是因为他底层库多,你现在调了很多库函数,用C语言改的话还要自己去写你调用的函数的功能,这工作量很大,一个资深的程序员没有类似的资料情况下少说也得写3天,应该没人为了你这30鱼币给你改的

妖娆乌龙茶 发表于 2021-9-3 17:54:27

人造人 发表于 2021-9-3 15:44
既然你不会C语言,为什么要把这个代码改成C语言?
既然你不会C语言,怎么知道把这个代码改成C语言这件事是 ...

用的模拟软件默认所接受的解释程序就是c, 用python要改我这个模拟的环境,这是我模拟大工作里的一个小部分,不了解嘛,所以问问。谢谢啦

妖娆乌龙茶 发表于 2021-9-3 17:57:10

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

原来如此,那我放弃了,谢谢啦

wjp 发表于 2021-9-4 01:14:03

直接用c调用Python吧{:10_261:}

Asss-whom 发表于 2021-9-4 16:02:42

wjp 发表于 2021-9-4 01:14
直接用c调用Python吧

只能Python调用C吧?新手,不太了解。

人造人 发表于 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 = 0\n"
      "print(l)";
    Py_Initialize();
    PyRun_SimpleString(code);
    PyRun_SimpleString("l = 1");
    PyRun_SimpleString("print(l)");
    Py_Finalize();
    return 0;
}

Nate_2020 发表于 2021-9-5 08:20:47

{:5_109:}

不大不小甲鱼 发表于 2021-9-6 08:32:49

人造人 发表于 2021-9-4 17:24
这算改成了C语言吗?^_^

这还是调用python解释器吧,表面上是改完了,但是只改了个外表,本质上还是跑的python,还是要看应用场景

人造人 发表于 2021-9-6 10:33:37

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

对,调用的 python 解释器
页: [1]
查看完整版本: 一段简单的python改写成c语言