主頁 > 後端開發 > 【技識訓累】Python中的NumPy庫【二】

【技識訓累】Python中的NumPy庫【二】

2023-06-15 07:37:14 後端開發

NumPy庫的主要類有哪些?

NumPy庫的主要類包括:

  1. ndarray:N維陣列物件,是NumPy最重要的類之一,它是Python中陣列的基本資料結構,可以進行高效的數學計算和資料處理操作,

  2. ufunc:通用函式物件,是NumPy庫中的另一個重要類,它是一種高效的元素級運算工具,提供了基本的數學運算、邏輯運算和位運算等基本的數學和邏輯操作,

  3. linspace:生成一定數量的等引數列,回傳一個一維陣列,

  4. meshgrid:用于生成二維的坐標矩陣,常用于三維繪圖和計算機圖形學等領域,

  5. random:亂數生成器,提供了眾多生成亂數和隨機樣本的函式,常用于模型訓練和資料分析,

  6. matlib:矩陣庫,提供了各種矩陣操作和矩陣運算的函式,包括矩陣乘法、矩陣分解和矩陣求逆等,

  7. fft:快速傅里葉變換(FFT)類,提供了高效的傅里葉變換演算法,常用于信號處理和影像處理等領域,

  8. poly:多項式類,提供了多項式求解、多項式擬合和多項式積分等數學運算,常用于資料擬合和模型建立,

  9. linalg:線性代數類,提供了各種線性代數運算的函式,包括矩陣求逆、特征值求解和奇異值分解等,常用于資料分析和機器學習等領域,

NumPy庫和Python自帶的串列有什么區別?

NumPy庫是Python中用于科學計算和數學計算的常用庫,它提供了多維陣列物件和各種數學函式和操作,相比于Python自帶的串列,NumPy陣列具有以下幾點優勢:

  1. 記憶體占用少:NumPy陣列中的所有元素都是相同的資料型別,因此記憶體占用更小,運行速度更快,

  2. 陣列操作方便:NumPy陣列可以進行各種數學運算和邏輯運算,例如矩陣乘法、陣列切片、陣列重塑等操作,這些操作可以在不使用回圈的情況下完成,

  3. 廣播功能:NumPy陣列可以進行廣播操作,即對形狀不同的陣列進行相應的操作,這大大減少了陣列形狀不同需要回圈處理的情況,

而Python自帶的串列則是一種基本的資料結構,可以存盤任意的物件,相較于NumPy陣列,其靈活性更高,可以進行各種操作,同時也更容易理解和使用,但串列的操作性能在大型資料集時會比NumPy陣列慢,

如何將Python數列轉換為NumPy陣列?

將Python數列(即串列)轉換為NumPy陣列可以使用NumPy庫中的array()函式,該函式接受一個串列引數,回傳一個NumPy陣列,

下面是一個示例代碼:

import numpy as np

# 定義一個Python數列
lst = [1, 2, 3, 4, 5]

# 轉換為NumPy陣列
arr = np.array(lst)

# 輸出結果
print(arr)

輸出結果為:

[1 2 3 4 5]

在上面的代碼中,我們首先匯入了NumPy庫,然后,我們定義了一個Python數列lst,接著,我們使用array()函式將lst轉換為NumPy陣列arr,最后,我們輸出了arr的值,

注意,當我們將Python數列轉換為NumPy陣列時,NumPy會自動根據數列中的值的型別來推斷生成的陣列的資料型別,例如,上面的代碼中lst是一個包含整數的數列,因此生成的陣列也是整數型別的,如果數列中包含浮點數,則生成的陣列將是浮點數型別的,

NumPy庫中的陣列是什么?有哪些特征?如何創建

NumPy庫中的陣列是一種多維陣列物件,又稱為ndarray,這些陣列是用來存盤相同資料型別的元素(例如int、float等),它是一個可變的物件,可以在其中進行快速且有效的資料操作,

以下是NumPy陣列的一些特征:

  1. 陣列是一種類似于串列的物件,但在NumPy中,它們可以包含更多的維度,
  2. 陣列中的元素必須是相同的型別,
  3. NumPy陣列的大小是固定的,也就是說,一旦創建,就無法再加入新元素,
  4. 陣列可以通過下標訪問,也可以使用NumPy提供的高效的函式對陣列進行操作,

以下是創建NumPy陣列的幾種方式:

1. 通過串列創建

import numpy as np

a = np.array([1, 2, 3])  # 一維陣列
b = np.array([[1, 2, 3], [4, 5, 6]])  # 二維陣列

2. 通過arange函式創建

import numpy as np

a = np.arange(10)  # 生成一維陣列[0 1 2 3 4 5 6 7 8 9]
b = np.arange(0, 10, 2)  # 生成一維陣列[0 2 4 6 8],步長為2
c = np.arange(12).reshape(3, 4)  # 生成二維陣列

3. 使用zeros和ones函式創建

import numpy as np

a = np.zeros(5)  # 生成一維陣列[0. 0. 0. 0. 0.]
b = np.zeros((2, 3))  # 生成二維陣列
c = np.ones((2, 4, 3))  # 生成三維陣列,全部元素為1

4. 使用random函式創建

import numpy as np

a = np.random.rand(3)  # 生成一維陣列,元素是[0, 1)之間的亂數
b = np.random.randn(3, 2)  # 生成二維陣列,元素是標準正態分布的亂數
c = np.random.randint(1, 10, size=(2, 3))  # 生成二維陣列,元素是1-10之間的隨機整數

 如何使用NumPy陣列進行算術運算

import numpy as np

# 創建兩個NumPy陣列
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])

# 加法
c = a + b
print("加法:", c)  # [5 7 9]

# 減法
c = a - b
print("減法:", c)  # [-3 -3 -3]

# 乘法
c = a * b
print("乘法:", c)  # [ 4 10 18]

# 除法
c = a / b
print("除法:", c)  # [0.25 0.4  0.5 ]

# 指數
c = np.power(a, 2)
print("指數:", c)  # [1 4 9]

# 平方根
c = np.sqrt(a)
print("平方根:", c)  # [1.         1.41421356 1.73205081]

# 取反
c = -a
print("取反:", c)  # [-1 -2 -3]

如何使用NumPy陣列進行三角函式運算?

import numpy as np

# 創建一個長度為10的一維NumPy陣列
arr = np.array([0, np.pi/6, np.pi/4, np.pi/3, np.pi/2, np.pi, 3*np.pi/2, 2*np.pi/3, 3*np.pi/4, 5*np.pi/6])

# 計算陣列中每個元素的正弦值
sin_arr = np.sin(arr)
print("sin函式結果:", sin_arr)

# 計算陣列中每個元素的余弦值
cos_arr = np.cos(arr)
print("cos函式結果:", cos_arr)

# 計算陣列中每個元素的正切值
tan_arr = np.tan(arr)
print("tan函式結果:", tan_arr)

輸出結果:

sin函式結果: [ 0.          0.5         0.70710678  0.8660254   1.          0.
 -1.         -0.8660254  -0.70710678 -0.5       ]

cos函式結果: [ 1.00000000e+00  8.66025404e-01  7.07106781e-01  5.00000000e-01
  6.12323400e-17 -1.00000000e+00 -1.83697020e-16 -5.00000000e-01
 -7.07106781e-01 -8.66025404e-01]

tan函式結果: [ 0.00000000e+00  5.77350269e-01  1.00000000e+00  1.73205081e+00
  1.63312394e+16 -1.22464680e-16  5.44374645e+15  1.73205081e+00
  1.00000000e+00  5.77350269e-01]

如何使用NumPy陣列進行指數和對數運算?

NumPy陣列可以使用exponential(指數)和logarithmic(對數)函式進行指數和對數運算,

exponential函式計算每個元素的指數值,logarithmic函式計算每個元素的自然對數,也可以計算底數為其他常數的對數,

下面是一個簡單的例子,演示如何使用NumPy陣列進行指數和對數操作,

import numpy as np

arr = np.array([1, 2, 3, 4, 5])

# 指數運算
print("exponential:", np.exp(arr)) 

# 自然對數
print("natural logarithm:", np.log(arr))

# 底數為2的對數
print("log base 2:", np.log2(arr))

# 底數為10的對數
print("log base 10:", np.log10(arr))

在上面的例子中,我們創建了一個一維NumPy陣列,并使用numpy.exp函式計算每個元素的指數值,使用numpy.log函式計算每個元素的自然對數,使用numpy.log2函式計算底數為2的對數,使用numpy.log10函式計算底數為10的對數,

輸出結果如下:

exponential: [   2.71828183    7.3890561    20.08553692   54.59815003  148.4131591 ]
natural logarithm: [ 0.          0.69314718  1.09861229  1.38629436  1.60943791]
log base 2: [ 0.          1.          1.5849625   2.          2.32192809]
log base 10:[ 0.          0.30103     0.47712125  0.60205999  0.69897   ]

因此,使用NumPy進行指數和對數計算非常簡單,只需呼叫相應的函式即可,

如何使用NumPy陣列進行統計運算

NumPy是Python中用于數值計算和科學計算的常用庫,它提供了一個稱為ndarray的多維陣列物件,可以使用它進行統計運算,

以下是一個使用NumPy陣列進行統計運算的例子:

import numpy as np

# 創建一個隨機陣列
arr = np.random.randn(100)

# 計算陣列的均值、中位數、標準差和方差
mean = np.mean(arr)
median = np.median(arr)
std_dev = np.std(arr)
variance = np.var(arr)

print('均值:', mean)
print('中位數:', median)
print('標準差:', std_dev)
print('方差:', variance)

上面的代碼創建了一個包含100個亂數的NumPy陣列,然后對陣列進行了一些統計運算,np.mean()函式計算陣列的均值,np.median()函式計算中位數,np.std()函式計算標準差,np.var()函式計算方差,

輸出結果可能會因為亂數的不同而有所不同,但通常會接近以下值:

均值: 0.03821741789938476
中位數: 0.04451500104648571
標準差: 0.9616266701218458
方差: 0.9241266652394576

如何使用NumPy陣列進行線性代數運算?

NumPy是基于Python的庫,主要用于科學計算,NumPy中包含大量的數學函式,以支持矩陣和陣列的運算,在NumPy中,陣列物件被稱為ndarray,可以進行各種數學運算,下面是使用NumPy陣列進行線性代數運算的案例:

import numpy as np

# 定義 NumPy 陣列
A = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
B = np.array([1, 2, 3])

# 計算 A 的逆矩陣
A_inv = np.linalg.inv(A)

# 求解線性方程組 Ax = B
x = np.linalg.solve(A, B)

# 計算 A 和 B 的乘積
C = A.dot(B)

# 計算 A 和 B 的點積
D = np.dot(A, B)

# 計算矩陣 A 的行列式
det_A = np.linalg.det(A)

# 計算矩陣 A 的特征值和特征向量
eigenvalues, eigenvectors = np.linalg.eig(A)

# 列印結果
print('A:')
print(A)
print('A_inv:')
print(A_inv)
print('B:')
print(B)
print('x:')
print(x)
print('C:')
print(C)
print('D:')
print(D)
print('det_A:')
print(det_A)
print('eigenvalues:')
print(eigenvalues)
print('eigenvectors:')
print(eigenvectors)

這是一個簡單的NumPy陣列線性代數運算的示例,包括計算逆矩陣、求解線性方程組、計算矩陣乘積、點積、矩陣行列式、特征值和特征向量等等,在NumPy中,還有很多其他的線性代數運算函式可供使用,

如何使用NumPy陣列進行傅里葉變換

NumPy中的傅里葉變換函式位于numpy.fft模塊中,其中包括傅里葉變換、逆變換和頻率域濾波等功能,以下是使用NumPy陣列進行傅里葉變換的示例:

import numpy as np
import matplotlib.pyplot as plt

# 生成信號
fs = 1000  # 采樣率
t = np.arange(0, 1, 1/fs)  # 時間軸
f1, f2 = 10, 100  # 兩個頻率成分
s = np.sin(2*np.pi*f1*t) + 0.5*np.sin(2*np.pi*f2*t)

# 進行傅里葉變換
S = np.fft.fft(s)  # 頻域信號
freqs = np.fft.fftfreq(len(s), 1/fs)  # 頻率軸

# 繪制原始信號
plt.subplot(2, 1, 1)
plt.plot(t, s)
plt.xlabel('Time (s)')
plt.ylabel('Amplitude')
plt.title('Original Signal')

# 繪制頻域信號
plt.subplot(2, 1, 2)
plt.plot(freqs, np.abs(S))
plt.xlabel('Frequency (Hz)')
plt.ylabel('Magnitude')
plt.title('Frequency Domain Signal')

plt.show()

在此示例中,我們生成了一個包含兩個頻率成分的信號,并利用`np.fft.fft()`函式進行了傅里葉變換,得到了信號的頻域表示,然后,利用`np.fft.fftfreq()`函式生成了頻率軸,最后將時域信號和頻域信號繪制在同一張圖中進行比較,

需要注意的是,在進行傅里葉變換之前,需要保證信號的采樣率是足夠高的,以避免出現混淆和重疊的頻率成分,此外,傅里葉變換生成的頻域信號一般是對稱的,因此通常只需要使用其一半進行后續處理和分析,

如何使用NumPy陣列進行形狀變換?

NumPy提供了多種方法用于陣列形狀變換,可以使用reshape函式重新構造陣列的形狀,也可以使用transpose函式交換陣列的維度,

示例代碼:

import numpy as np

# 創建一個包含1~9的一維陣列
arr = np.arange(1, 10)

# 將一維陣列重塑為3 X 3的二維陣列
arr_reshaped = arr.reshape((3, 3))

# 輸出二維陣列
print("Reshaped array:\n", arr_reshaped)

# 交換二維陣列的維度
arr_transposed = arr_reshaped.transpose()

# 輸出交換維度后的陣列
print("Transposed array:\n", arr_transposed)

輸出結果:

Reshaped array:
 [[1 2 3]
  [4 5 6]
  [7 8 9]]
  
Transposed array:
 [[1 4 7]
  [2 5 8]
  [3 6 9]]

在上面的代碼中,我們從1到9創建了一個一維陣列,并使用reshape函式將其重新整形為3 X 3的二維陣列,然后,我們使用transpose函式交換了陣列的維度,并輸出了結果,

在黑夜里夢想著光,心中覆寫悲傷,在悲傷里忍受孤獨,空守一絲溫暖, 我的淚水是無底深海,對你的愛已無言,相信無盡的力量,那是真愛永在, 我的信仰是無底深海,澎湃著心中火焰,燃燒無盡的力量,那是忠誠永在,

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/555168.html

標籤:Python

上一篇:shp 地圖檔案批量添加欄位

下一篇:返回列表

標籤雲
其他(160974) Python(38229) JavaScript(25495) Java(18240) C(15237) 區塊鏈(8270) C#(7972) AI(7469) 爪哇(7425) MySQL(7251) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5875) 数组(5741) R(5409) Linux(5347) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4593) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2435) ASP.NET(2404) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) .NET技术(1984) 功能(1967) HtmlCss(1966) Web開發(1951) C++(1940) python-3.x(1918) 弹簧靴(1913) xml(1889) PostgreSQL(1881) .NETCore(1863) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 【C++】Microsoft C++、C 和匯編程式檔案

    ......

    uj5u.com 2020-09-10 00:57:23 more
  • 例外宣告

    相比于斷言適用于排除邏輯上不可能存在的狀態,例外通常是用于邏輯上可能發生的錯誤。 例外宣告 Item 1:當函式不可能拋出例外或不能接受拋出例外時,使用noexcept 理由 如果不打算拋出例外的話,程式就會認為無法處理這種錯誤,并且應當盡早終止,如此可以有效地阻止例外的傳播與擴散。 示例 //不可 ......

    uj5u.com 2020-09-10 00:57:27 more
  • Codeforces 1400E Clear the Multiset(貪心 + 分治)

    鏈接:https://codeforces.com/problemset/problem/1400/E 來源:Codeforces 思路:給你一個陣列,現在你可以進行兩種操作,操作1:將一段沒有 0 的區間進行減一的操作,操作2:將 i 位置上的元素歸零。最終問:將這個陣列的全部元素歸零后操作的最少 ......

    uj5u.com 2020-09-10 00:57:30 more
  • UVA11610 【Reverse Prime】

    本人看到此題沒有翻譯,就附帶了一個自己的翻譯版本 思考 這一題,它的第一個要求是找出所有 $7$ 位反向質數及其質因數的個數。 我們應該需要質數篩篩選1~$10^{7}$的所有數,這里就不慢慢介紹了。但是,重讀題,我們突然發現反向質數都是 $7$ 位,而將它反過來后的數字卻是 $6$ 位數,這就說明 ......

    uj5u.com 2020-09-10 00:57:36 more
  • 統計區間素數數量

    1 #pragma GCC optimize(2) 2 #include <bits/stdc++.h> 3 using namespace std; 4 bool isprime[1000000010]; 5 vector<int> prime; 6 inline int getlist(int ......

    uj5u.com 2020-09-10 00:57:47 more
  • C/C++編程筆記:C++中的 const 變數詳解,教你正確認識const用法

    1、C中的const 1、區域const變數存放在堆疊區中,會分配記憶體(也就是說可以通過地址間接修改變數的值)。測驗代碼如下: 運行結果: 2、全域const變數存放在只讀資料段(不能通過地址修改,會發生寫入錯誤), 默認為外部聯編,可以給其他源檔案使用(需要用extern關鍵字修飾) 運行結果: ......

    uj5u.com 2020-09-10 00:58:04 more
  • 【C++犯錯記錄】VS2019 MFC添加資源不懂如何修改資源宏ID

    1. 首先在資源視圖中,添加資源 2. 點擊新添加的資源,復制自動生成的ID 3. 在解決方案資源管理器中找到Resource.h檔案,編輯,使用整個專案搜索和替換的方式快速替換 宏宣告 4. Ctrl+Shift+F 全域搜索,點擊查找全部,然后逐個替換 5. 為什么使用搜索替換而不使用屬性視窗直 ......

    uj5u.com 2020-09-10 00:59:11 more
  • 【C++犯錯記錄】VS2019 MFC不懂的批量添加資源

    1. 打開資源頭檔案Resource.h,在其中預先定義好宏 ID(不清楚其實ID值應該設定多少,可以先新建一個相同的資源項,再在這個資源的ID值的基礎上遞增即可) 2. 在資源視圖中選中專案資源,按F7編輯資源檔案,按 ID 型別 相對路徑的形式添加 資源。(別忘了先把檔案拷貝到專案中的res檔案 ......

    uj5u.com 2020-09-10 01:00:19 more
  • C/C++編程筆記:關于C++的參考型別,專供新手入門使用

    今天要講的是C++中我最喜歡的一個用法——參考,也叫別名。 參考就是給一個變數名取一個變數名,方便我們間接地使用這個變數。我們可以給一個變數創建N個參考,這N + 1個變數共享了同一塊記憶體區域。(參考型別的變數會占用記憶體空間,占用的記憶體空間的大小和指標型別的大小是相同的。雖然參考是一個物件的別名,但 ......

    uj5u.com 2020-09-10 01:00:22 more
  • 【C/C++編程筆記】從頭開始學習C ++:初學者完整指南

    眾所周知,C ++的學習曲線陡峭,但是花時間學習這種語言將為您的職業帶來奇跡,并使您與其他開發人員區分開。您會更輕松地學習新語言,形成真正的解決問題的技能,并在編程的基礎上打下堅實的基礎。 C ++將幫助您養成良好的編程習慣(即清晰一致的編碼風格,在撰寫代碼時注釋代碼,并限制類內部的可見性),并且由 ......

    uj5u.com 2020-09-10 01:00:41 more
最新发布
  • 【技識訓累】Python中的NumPy庫【二】

    博客推行版本更新,成果積累制度,已經寫過的博客還會再次更新,不斷地琢磨,高質量高數量都是要追求的,工匠精神是學習必不可少的精神。因此,大家有何建議歡迎在評論區踴躍發言,你們的支持是我最大的動力,你們敢投,我就敢肝 ......

    uj5u.com 2023-06-15 07:37:14 more
  • shp 地圖檔案批量添加欄位

    # -- coding:utf-8 -- import geopandas as gpd import os from osgeo import ogr # shp 檔案批量添加欄位 def addfeilds(filepath): for filename in os.listdir(filepa ......

    uj5u.com 2023-06-15 07:37:10 more
  • 【python基礎】input函式

    # 1.初識input函式 大多數程式都旨在解決最終用戶的問題,為此通常需要從用戶那里獲取一些資訊。例如假設有人要判斷自己是否到了投票的年齡,要撰寫回答這個問題的程式,就需要知道用戶的年齡,這樣才能給出答案。此時就需要用戶輸入給程式一些資訊,而input函式就是來處理用戶輸入資訊的。 其語法格式: ......

    uj5u.com 2023-06-15 07:37:00 more
  • Set 介面及其常用方法

    Set 介面是 Collection 介面的一個子介面。Set 介面的實作類不會包含重復的元素,并且最多只能有一個 null 元素。當嘗試添加重復元素時,添加操作將被忽略。Set 介面取出元素的順序和添加元素的順序不一致(但是每次取出的順序是固定的),即無法通過索引訪問 Set 中的元素。 ......

    uj5u.com 2023-06-15 07:36:35 more
  • rocketMQ訊息佇列簡介及其實體

    一、RocketMQ 核心的四大組件: Producer:就是訊息生產者,可以集群部署。它會先和 NameServer 集群中的隨機一臺建立長連接,得知當前要發送的 Topic 存在哪臺 Broker Master上,然后再與其建立長連接,支持多種負載平衡模式發送訊息。 Consumer:訊息消費者 ......

    uj5u.com 2023-06-15 07:36:29 more
  • jvm垃圾回收及記憶體模型

    1、了解垃圾回收之前,必須先了解記憶體模型 2、垃圾回收區域 a、 首先要標記垃圾,找出垃圾 b、Java垃圾回收(一)_java 垃圾回收_頭發慢點掉的小馬的博客-CSDN博客 垃圾回收器 方法區不需要連續的記憶體,可以選擇固定大小或者可擴展。并且還可以選擇不實作垃圾收集。相對而言,垃圾收集行為在這個 ......

    uj5u.com 2023-06-15 07:29:58 more
  • [ARM匯編]計算機原理與數制基礎—1.1.4 邏輯運算

    在計算機中,邏輯運算是對二進制資料進行操作的基礎。邏輯運算主要包括以下幾種:與(AND)、或(OR)、非(NOT)和異或(XOR)。接下來,我們將詳細介紹這幾種邏輯運算的原理及其應用。 #### 與(AND)運算 與運算的規則如下: - 0 AND 0 = 0 - 0 AND 1 = 0 - 1 A ......

    uj5u.com 2023-06-14 10:33:29 more
  • servlet介紹和如何在idea中寫一個servlet程式

    ## 1. Servlet ### 1.1 Servlet簡介 Servlet(Server Applet)是Java Servlet的簡稱,稱為小服務程式或服務連接器,用Java撰寫的服務器端程式,具有獨立于平臺和協議的特性,主要功能在于互動式地瀏覽和生成資料,生成動態Web內容。 - 把實作了S ......

    uj5u.com 2023-06-14 10:33:17 more
  • 消失的死鎖:從 JSF 執行緒池滿到 JVM 初始化原理剖析

    在一次上線時,按照正常流程上線后,觀察了線上報文、介面可用率十分鐘以上,未出現例外情況,結果在上線一小時后突然收到jsf執行緒池耗盡的報警,并且該應用一共有30臺機器,只有一臺機器出現該問題,迅速下線該機器的jsf介面,恢復線上。然后開始排查問題。 ......

    uj5u.com 2023-06-14 10:33:08 more
  • 驅動開發:內核ShellCode執行緒注入

    還記得`《驅動開發:內核LoadLibrary實作DLL注入》`中所使用的注入技術嗎,我們通過`RtlCreateUserThread`函式呼叫實作了注入DLL到應用層并執行,本章將繼續探索一個簡單的問題,如何注入`ShellCode`代碼實作反彈Shell,這里需要注意一般情況下`RtlCreat... ......

    uj5u.com 2023-06-14 10:32:59 more