C / C ++为Python程序员

编程入门 行业动态 更新时间:2024-10-23 10:26:21
本文介绍了C / C ++为Python程序员的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我要切换从Pyt​​hon来C / C ++。 你知道一个快速的参考指南或类似的东西要如何启动一个参考?例如像在numpy的和SciPy的教程。我也读了不少文件的,例如:

I have to switch from Python to C/C++. Do you know a quick "reference tutorial" or something like that to have a reference to how to start? For example something like the Numpy and Scipy tutorials. I have read a lot of "documentation", for example

      
  • C ++傻瓜
  •   
  • 的K&R C程序设计语言
  •   
  • 有很多博客和在线文档如:eli.thegreenplace/2010/01/11/pointers-to-arrays-in-c/,
  •   
  • newdata.box.sk/bx/c/
  •   
  • 吨的Q&A在这里计算器的
  •   
  • ...

但它仍然不清楚,我连怎么开始做移植到C / C ++是这样的:

but it's still not clear to me even how to do start porting to C/C++ something like:

#!/usr/bin/env python import time import numpy as np import tables as tb """Retrieve 3D positions form 1000 files and store them in one single HDF5 file. """ t = time.time() # Empty array sample = np.array([]) sample.shape = (0,3) # Loop over the files for i in range(0, 1000): filename = "mill2sort-"+str(i)+"-extracted.h5" print "Doing ", filename # Open data file h5f = tb.openFile(filename, 'r') # Stack new data under previous data sample = np.vstack((sample, h5f.root.data.read())) h5f.close() # Create the new file h5 = tb.openFile("mill2sort-extracted-all", 'w') # Save the array h5.createArray(h5.root, 'data', sample, title='mill_2_sub_sample_all') h5.flush() h5.close() print "Done in ", time.time()-t, " seconds."

在C或C ++。在这个例子中我甚至无法理解如何通过一个三维数组一个函数,找到它的尺寸,像

in C or C++. In this example I was not even able to understand how to pass a 3D array to a function that find it's dimensions, something like

int getArrayDimensions(int* array, int *dimensions){ *dimensions = sizeof(*array)/sizeof(array[0]); return 0; }

使用数组是一个

int array[3][3][3] = ...

感谢您的任何建议!)

推荐答案

好吧,让刚刚用C启动了。

Alright, lets just start with C for now.

void readH5Data(FILE *file, int ***sample); // this is for you to implement void writeH5Data(FILE *file, int ***sample); // this is for you to implement int main(int argc, const char *argv[]) { #define width 3 #define height 3 #define depth 3 time_t t = time(NULL); int ***sample = calloc(width, sizeof(*sample)); for (int i = 0; i < width; i++) { sample[i] = calloc(height, sizeof(**sample)); for (int j = 0; j < height; j++) { sample[i][j] = calloc(depth, sizeof(***sample)); } } for (int i = 0; i < 1000; i++) { char *filename[64]; sprintf(filename, "mill2sort-%i-extracted.h5", i); // open the file FILE *filePtr = fopen(filename, "r"); if (filePtr == NULL || ferror(filePtr)) { fprintf(stderr, "%s\n", strerror(errno)); exit(EXIT_FAILURE); } readH5Data(filePtr, sample); fclose(filePtr); } char filename[] = "mill2sort-extracted-all"; FILE *writeFile = fopen(filename, "w"); if (writeFile == NULL || ferror(writeFile)) { fprintf(stderr, "%s\n", strerror(errno)); exit(EXIT_FAILURE); } writeH5Data(writeFile, sample); fflush(writeFile); fclose(writeFile); printf("Done in %lli seconds\n", (long long int) (time(NULL) - t)); for (int i = 0; i < width; i++) { for (int j = 0; j < width; j++) { free(sample[i][j]); } free(sample[i]); } free(sample); }

只要你记住,你的数组是3x3x3的,你应该没有问题,超越你的'writeH5Data'方法的界限。

As long as you remember that your array is 3x3x3, you should have no problems overstepping the bounds in your 'writeH5Data' method.

更多推荐

C / C ++为Python程序员

本文发布于:2023-10-07 15:03:01,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1469709.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:程序员   Python

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!