五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

VC++調(diào)用Python——Numpy數(shù)組的傳輸與讀取

2022-12-07 23:35 作者:剎那-Ksana-  | 我要投稿

可隨意轉(zhuǎn)載,不用問(wèn)。

一、前期工作

本文延續(xù)前文的那個(gè) cppwithpython 的例子。另外,為了偷懶方便,所有的動(dòng)態(tài)分配都沒(méi)有釋放內(nèi)存,請(qǐng)不要模仿。

首先,如果沒(méi)有安裝 numpy,則用管理員權(quán)限打開(kāi) anaconda prompt,在虛擬環(huán)境中安裝 numpy

然后找到 numpy 的安裝地址——?C:\ProgramData\Anaconda3\envs\cppwithpython\Lib\site-packages\numpy

C:\ProgramData\Anaconda3\envs\cppwithpython\Lib\site-packages\numpy\core\include 這個(gè)文件夾?include 到 Visual Studio 的 C++?項(xiàng)目中。詳細(xì)方法參見(jiàn)前文 include python 頭文件的方法。

然后我們就可以在項(xiàng)目中導(dǎo)入 numpy 的 header 了

另外,別忘了將?C:\ProgramData\Anaconda3\envs\cppwithpython\Lib\site-packages 這個(gè)文件夾加入到?module_search_paths 中(詳細(xì)方法見(jiàn)前文)

然后我們利用以下代碼初始化 numpy

二、從 C++ 傳輸數(shù)據(jù)給? Python

我們這里依舊是用前文的 D:\demo.py 這個(gè)文件,并且依舊沿用前文調(diào)用 python 函數(shù)的代碼,但是 demo.py 這個(gè)文件里面的內(nèi)容改為

這里的函數(shù),相較之前的 PrintHelloWorld, 帶有了一個(gè)參數(shù) arr,這個(gè)參數(shù) arr 需要我們?cè)贑++端構(gòu)建

這里我們構(gòu)建一個(gè)簡(jiǎn)單的 pystring

然后,傳遞參數(shù)時(shí),我們需要構(gòu)建一個(gè) tuple

然后我們把這個(gè) tuple 傳到 python 端

然后我們可以看到我們的控制臺(tái)成功的顯示了?Hello World From C++

三、構(gòu)建 Numpy 數(shù)組

接下來(lái)我們需要在 C++ 端構(gòu)建一個(gè) numpy 的數(shù)組,我們首先從簡(jiǎn)單的?numpy.empty 開(kāi)始

以上代碼允許我們建立一個(gè) 6×6 的數(shù)據(jù)類型為 float32 的 empty 矩陣

我們可以在控制臺(tái)看到它的輸出

相當(dāng)于?numpy.empty((6,6), dtype=numpy.float32)

除此以外,我們可以在 C++ 里面構(gòu)造數(shù)組

最后在控制臺(tái)的輸出如圖所示

完整代碼如下

四、從 Python 接收數(shù)據(jù)

以上的代碼已經(jīng)可以從 python 里面接受函數(shù)的返回值,現(xiàn)在,我們?cè)?demo.py 中再加入一個(gè)函數(shù)

然后我們可以獲取這個(gè)函數(shù)的返回值。另外,利用?PyArray_Check?這個(gè)函數(shù),可以檢測(cè)返回的 PyObject 的類型是不是 ndarray

Transpose 后的結(jié)果

此外,我們還可以在 C++ 端對(duì)返回以后的數(shù)組進(jìn)行一些計(jì)算

以上代碼可得如下結(jié)果

當(dāng)然我們還可以 index 我們返回的數(shù)組(這里我不是很確定有沒(méi)有更好的辦法,因?yàn)檫B續(xù)兩次 reinterpret_cast 顯得很奇怪)

以上的代碼將會(huì)得到如下的結(jié)果

以上這些就是 numpy 和 C++ 交互的基本操作了。

VC++調(diào)用Python——Numpy數(shù)組的傳輸與讀取的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
昆明市| 固原市| 全椒县| 海南省| 巴里| 桂东县| 仁寿县| 栾川县| 奉新县| 托克逊县| 同江市| 盐边县| 四川省| 延津县| 东乡| 科尔| 鄂温| 孟连| 铜梁县| 五华县| 宣威市| 封丘县| 宁陕县| 前郭尔| 延寿县| 乡宁县| 天津市| 拉萨市| 遂昌县| 鹤庆县| 循化| 龙陵县| 崇左市| 台北市| 海南省| 吉林省| 屯昌县| 隆昌县| 长寿区| 大姚县| 潜江市|