數據分析小白訓練營:基于python編程語言的Numpy庫介紹(第三方庫)(上篇)

(一)Numpy庫的安裝

安裝指定版本的Numpy庫,打開命令提示符,輸入下圖內容,只需要將1.25.5的版本修改成個人需要的版本,然后按下回車鍵,numpy庫就安裝在python中:

指定版本numpy庫安裝可能出現與當前python解釋器不適配的報錯情況,numpy庫版本不同,函數功能也有變化,想知道當前電腦的python解釋器適配什么版本的numpy庫,有一下兩種方法:

  1. 在命令提示符,輸入python,按下回車鍵,查看當前python解釋器版本,然后去瀏覽器搜索當前版本的python解釋器適配哪些numpy庫
  2. 在命令提示符里,任意輸入一個版本的版本,如果出現報錯,命令提示符也會在報錯的同時,給你適配版本的python解釋器

(二)認識numpy和配置環境

對大量數據進行分析,python中的列表和字典可以存儲大量數據,但是無法對數據進行計算,而numpy庫可以將數據存儲為矩陣的格式,

numpy庫將數據存儲為矩陣的格式的優勢:

  1. 把數據當作矩陣來處理,可以大大提高運行速度(numpy庫的底層用c封裝,python只是調用代碼,方便用戶操作)
  2. 極大方便了計算(numpy庫依賴math數學庫)
  3. 金融行業將大量數據存儲在excel中,但是excel執行的速度沒有numpy庫執行的速度快

數組與矩陣的關系和區別:

  • 二維數組可以直接視為矩陣,因為其形狀和索引方式與數學矩陣完全一致

特性矩陣(Mathematics)數組(Programming)
維度限制僅限二維可有一維、二維、三維及以上

示例代碼:

#numpy第三方庫,可以將數據存儲為矩陣的形式
import numpy as np#import numpy:導入numpy庫,as np:取別名為np(可不寫) 
#numpy(底層用C,Python):數字,矩陣)處理數據的速度比較忙,:
#科學計算 庫,包含了很多和數學相關的公式#計算一下sin(),cos,tan()
print(np.sin(1))#這里參數為弧度,角度(D)和弧度(R)之間的關系:D = (180/π) × R
#計算一下絕對值
print(np.abs(-1))#abs():求絕對值
# np.還有很多函數,進入源代碼瀏覽一下。
#numpy 還可以進行矩陣運算
#numpy庫依賴math數學庫

(三)創建array

  • 矩陣的數據類型叫做ndarray
  • np.array(...)NumPy 的構造函數,不是任何實例方法
  • array:將矩陣數據可視化展示

示例代碼和解釋:

#array(數組) ->模擬了矩陣import numpy as np#導入numpy  as np#一維數組
list1 = [1,2,3,4,5] #python自帶的列表數據類型
v = np.array(list1)
print(v)#二維數組[多個一維數組構成]
m = np.array([list1,list1,list1])
print(m)#三維數組[多個二維數組構成]
z = np.array([[list1,list1,list1],[list1,list1,list1],[list1,list1,list1]])
print(z)z = np.array([m,m,m])
#更高維的y = np.array([z,z,z])"""
數組的基本屬性
"""
#一維數組
a = v.shape #查詢數組的形狀
b = v.ndim  #查詢數組的維度
c = v.size  #查詢數組中數據個數
print(type(v))
d = v.dtype #查詢數組中的元素類型,int8, int16, int32, int64: 表示不同長度的有符號整數。
# uint8, uint16, uint32, uint64: 表示不同長度的無符號整數。
# float16, float32, float64 (float 是 float64 的簡寫): 表示不同精度的浮點數。
# complex64, complex128 (complex 是 complex128 的簡寫): 表示復數,其中64和128表示復數的實部和虛部的位數。
# bool: 布爾類型,可以存儲True或False。
# str_: 表示定長字符串,可以通過添加數字來指定字符串的長度,如 'S10' 表示長度為10的字符串。
# object: 表示Python對象類型,可以用來存儲任意Python對象。
#二維數組
a = m.shape
b = m.ndim
c = m.size
print(type(m))
d = m.dtype
#三維數組
z.shape
z.ndim
z.size
type(z)
z.dtype

(四)數組的升維

核心功能:

1.np.array()

  • 將列表轉為NumPy數組


2.reshape()

  • 改變數組形狀,返回新數組

  • -1:自動計算該維度大小

  • 例:v.reshape(4,-1)?→ 4行,列數自動推算


3.ndim

  • ?查看數組維度數(如二維數組返回?2


4.resize()

  • 直接修改原數組,無返回值

  • 例:v.resize(4,4)?→ 強制將原數組變為4×4

示例代碼和解釋:

import numpy as nplist1 = [1,2,3,4,5,6,7,8,1,2,3,4,5,6,7,8]# list1:[1,2,3,4,5,6,7,8,1,2,3,4,5,6,7,8]
v = np.array(list1)# v:[1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8]
print(v)#一維變二維[-1表示自己計算]【返回一個改變后的矩陣】
# a.reshape(newshape, order='C')
# a:要重新形狀的數組。
# newshape:一個整數或者元組,用于定義新的形狀。
# order:可選參數,指定元素在數組中的讀取順序。'C'意味著按行,'F'意味著按列,'A'意味著原順序,'K'意味著元素在內存中的出現順序。
r1 = v.reshape(4,4)r1 = v.reshape(4,-1)
print(r1)
r1.ndim#一維變三維
r2 = v.reshape(1,-1,2)#16/1=16表示一個維度里有16個數據,16/2=8表示每個維度里有8行數據,2表示2列數據
print(r2)#二維變三維
r3 = r1.reshape(2,2,4)
print(r3)#resize()【不返回計算結果】【直接修改原始數組】
#r4 = v.resize(2,4)
#print(r4)
r4 = v.resize(4,4)#直接會修改原始數據到相應的維度
print(v)

(五)數組的降維

核心功能:

1. 創建 & 升維
  • np.array(list1)?→ 將列表轉為NumPy數組(默認一維)

  • v.reshape(2,2,2)?→ 將數組升維為?2×2×2 的三維數組


2. 查看維度
  • v.ndim?→ 返回數組的維度數(此處為?3


3. 降維為二維
  • v.reshape(1,8)?→ 將三維數組降維為?1行8列的二維數組


4. 降維為一維
  • ravel():展平為一維(可能共享內存,修改可能影響原數組)

  • flatten():展平為一維(獨立副本,修改不影響原數組)


5. 直接修改形狀
  • v.shape = (2,4)?→?就地修改原數組為 2×4 的二維數組

  • 矩陣在內存條里是以鏈式結構的形式存儲的,通過矩陣的形式去表達

  • 可以通過shape修改屬性的方式,實現對數據的降維

示例代碼:

import numpy as nplist1 = [1,2,3,4,5,6,7,8]
v = np.array(list1)
v = v.reshape(2,2,2)
print(v)
v.ndim#將三維降到二維
r1 = v.reshape(1,8)
print(r1)
r1.ndim#將高維數據轉化為一維
#ravel()
r2 = v.ravel()
print(r2)
r2.ndim#flatten()
r3 = v.flatten()#非常重要,
print(r3)
# flatten方法返回的是原數組的副本,這意味著對返回的一維數組所做的任何修改都不會影響原始的多維數組。
# ravel方法(如果可能)返回的是原始數組的視圖,因此對返回的一維數組所做的修改可能會影響原始的多維數組。這是因為ravel只是改變了數組的形狀和步長,而沒有復制數據。#小補充shape也可以實現降維
v.shape = (2,4)#通過直接對array數據的屬性進行修改。
print(v)

(六)創建特殊的數組

核心功能:

1. 創建全零數組?np.zeros()
  • 功能:生成指定形狀的數組,所有元素初始化為0

  • 示例

    • a = np.zeros(5)?→ 一維數組?[0., 0., 0., 0., 0.](浮點型)

    • b = np.zeros((2,2))?→ 二維數組?[[0., 0.], [0., 0.]]

    • c = np.zeros((3,2,2))?→ 三維數組(3×2×2),全為0

  • 特點:默認生成浮點數(float64),適用于數學計算


2. 創建全一數組?np.ones()
  • 功能:生成指定形狀的數組,所有元素初始化為1

  • 示例

    • d = np.ones(5)?→ 一維數組?[1., 1., 1., 1., 1.]

    • e = np.ones((2,2))?→ 二維數組?[[1., 1.], [1., 1.]]

    • f = np.ones((2,2,2))?→ 三維數組(2×2×2),全為1


3. 創建自定義填充值的數組?np.full()
  • 功能:生成指定形狀的數組,所有元素填充為給定值

  • 示例g = np.full((2,2,2), 5)?→ 三維數組(2×2×2),所有元素為5

  • 語法np.full(shape, fill_value)


4. 生成單位矩陣?np.eye()
  • 功能:生成對角線為1、其余為0的矩陣(可指定行列數)

  • 示例h = np.eye(5,7)?→ 5行7列的矩陣,主對角線為1,其余為0

  • 特點:用于稀疏矩陣初始化或線性代數運算


關鍵注意事項
  • 數據類型:所有數組默認以浮點數(float64)創建,適合數學計算

  • 形狀參數:通過元組指定多維形狀(如?(2,2)?表示二維數組)

  • 應用場景:常用于初始化權重矩陣、占位符數組或數值模擬中的初始條件

示例代碼:

import numpy as np#創建全為0的數組
a = np.zeros(5)#a:[0. 0. 0. 0.] 
#a表示為帶小數的浮點數類型(float64),所有矩陣表達是帶.的
b = np.zeros((2,2))#(2,2)np.zeros((2,2))
#zeros只能接受一個參數,(2,2)為元組形式
c = np.zeros((3,2,2))#創建全為1的數組
d = np.ones(5)
e = np.ones((2,2))
f = np.ones((2,2,2))#創建全為2的數組   矩陣中全部填充指定的數據
g = np.full((2,2,2), 5)#小補充
h = np.eye(5,7)#生成單位矩陣
print('hello')
#默認創建矩陣時,都是以浮點數的形式創建的,方便數學計算

(七)numpy中常用的兩個函數

核心功能:

1.?np.arange()?—— 按步長生成形如?range()?的數組
  • 功能:類似 Python 內置的?range(),但返回?NumPy 數組

  • 語法np.arange(start, end, step)

  • 特點

    • 左閉右開區間:包含?start,不包含?end

    • 步長控制:通過?step?指定元素間的增量

  • 示例
    r1 = np.arange(0, 9, 3) # 輸出: [0, 3, 6]
    • 解釋:從 0 開始,每次增加 3,直到小于 9(不包含 9)


2.?np.linspace()?—— 生成指定數量的等間距數值
  • 功能:在指定區間內生成?固定數量?的等間距數值

  • 語法np.linspace(start, end, num)

  • 特點

    • 閉區間:同時包含?start?和?end

    • 均勻分布:自動計算步長以匹配指定數量?num

  • 示例
    r2 = np.linspace(0, 1, 21) # 輸出: [0.0, 0.05, 0.1, ..., 1.0]
    • 解釋:從 0 到 1,生成 21 個等間距數值(含端點)

關鍵區別:

特征np.arange()np.linspace()
區間性質左閉右開閉區間(包含兩端)
控制方式通過?step?控制步長通過?num?控制總點數
適用場景整數序列、已知步長的場景精確控制點數、浮點數場景
典型用途迭代循環、離散采樣科學計算、繪圖坐標軸

示例代碼:

import numpy as np#1.arange(start, end, step) -> range(start, end, step)
# [左閉右開的區間]一次性產生規律的數據。
r1 = np.arange(0,9,3)
print(r1)#2.linspace(start, end, nums)
# [左右都是閉區間]
r2 = np.linspace(0,1,21)
print(r2)

(八)一維數組元素的選取與修改

[ ]的功能:

  1. 創建一個列表
  2. 索引/切片

核心功能:

1. 創建數組?np.arange()
  • 功能:生成指定范圍內的等差數列(類似 Python 的?range()

  • 示例:array1 = np.arange(1,9,1)?→ 創建數組?[1,2,3,4,5,6,7,8]

  • 參數說明:起始值=1,終止值=9(不含),步長=1


2. 單個元素選取
  • 語法:array[index]

  • 示例:a = array1[1]?→ 選取第二個元素(索引從0開始),結果為?2

  • 特點:通過整數索引直接訪問特定位置的元素


3. 多個元素選取
  • 語法:array[[indices]]

  • 示例:b = array1[[1,3,5]]?→ 選取索引為1、3、5的元素,結果為?[2,4,6]

  • 特點:通過列表傳遞多個索引,返回對應位置的元素集合


4. 切片操作(左閉右開)
  • 語法:array[start:end]

  • 示例:c = array1[0:6]?→ 選取索引0到5的元素(含0,不含6),結果為?[1,2,3,4,5,6]

  • 規則:遵循“左閉右開”原則,即包含起始索引,不包含結束索引


5. 修改單個元素
  • 語法:array[index] = new_value

  • 示例:array1[0] = 10?→ 將第一個元素修改為?10

  • 效果:原數組被直接修改,后續打印會反映新值


6. 批量修改元素
  • 語法:array[[indices]] = new_value

  • 示例:array1[[1,3,5]] = 20?→ 將索引1、3、5的元素修改為?20

  • 效果:一次性修改多個指定位置的元素值


7. 切片批量修改
  • 語法:array[start:end] = new_value

  • 示例:array1[0:6] = 100?→ 將索引0到5的所有元素修改為?100

  • 效果:對切片范圍內的所有元素統一賦值

示例代碼:

import numpy as nparray1 = np.arange(1,9,1)
print(array1)#選取某個元素
a = array1[1]#選取某些元素
b = array1[[1,3,5]]#切片(左閉右開)
c = array1[0:6]#修改某個元素
print(array1)
array1[0] = 10#批量修改某些元素
array1[[1,3,5]] =20
print(array1)array1[0:6] = 100
print(array1)

(九)二維數組元素的選取與修改

核心功能:

一、創建二維數組

np.arange().reshape()

  • 功能:生成連續數值并重塑為指定形狀的二維數組

  • 示例array1 = np.arange(24).reshape(4,6)

    • np.arange(24)?→ 生成0~23的一維數組

    • .reshape(4,6)?→ 重塑為4行6列的二維數組

  • 輸出示例

    [[ 0  1  2  3  4  5][ 6  7  8  9 10 11][12 13 14 15 16 17][18 19 20 21 22 23]]
    

二、元素選取與切片

1.?單個元素選取

  • 語法array[row, col]

  • 示例a = array1[1,4]?→ 選取第2行(索引1)、第5列(索引4)的元素(值為10

2.?選取整行

  • 語法array[row, :]

  • 示例b = array1[3,:]?→ 選取第4行(索引3)的所有列(結果為?[18,19,20,21,22,23]

3.?選取連續多行

  • 語法array[start_row:end_row, :]

  • 示例c = array1[0:2,:]?→ 選取前2行(索引0和1)的所有列

4.?選取非連續多行

  • 語法array[[rows], :]

  • 示例d = array1[[0,2],:]?→ 選取第1行(索引0)和第3行(索引2)的所有列

5.?選取單列

  • 語法array[:, col]

  • 示例e = array1[:,3]?→ 選取第4列(索引3)的所有行(結果為?[3,9,15,21]

6.?選取多列

  • 方式1:連續列 →?array[:, start_col:end_col]

    • 示例f = array1[:,0:3]?→ 選取前3列(索引0、1、2)

  • 方式2:非連續列 →?array[:, [cols]]

    • 示例g = array1[:,[0,3]]?→ 選取第1列(索引0)和第4列(索引3)


三、修改元素

1.?修改單個元素

  • 語法array[row, col] = new_value

  • 示例array1[1,4] = 100?→ 將第2行第5列的元素改為100

2.?修改整行

  • 語法array[row, :] = new_values

  • 示例array1[3,:] = 100?→ 將第4行的所有元素改為100

3.?修改多行

  • 語法array[[rows], :] = new_values

  • 示例array1[[0,2],:] = 50?→ 將第1行和第3行的所有元素改為50

關鍵規則總結:

操作類型語法示例說明
單個元素array[i,j]精確定位到某單元格
整行array[i,:]冒號表示該維度的全部
連續多行array[i:j,:]左閉右開區間
非連續多行array[[i,k],:]用列表傳遞非連續索引
單列array[:,j]所有行的某一列
多列(連續)array[:,i:j]左閉右開區間
多列(非連續)array[:,[i,k]]用列表傳遞非連續索引
修改操作array[...] = value直接賦值,原數組被永久修改

示例代碼:

import numpy as nparray1 = np.arange(24).reshape(4,6)#array數據 .reshape()
print(array1)#選取某個元素
a = array1[1,4]#第2行第5列#選取某行元素
b = array1[3,:] #逗號是用分隔 行和列。#選取某些行
c = array1[0:2,:]
d = array1[[0,2],:]#如果不是獲取連續的行,[]#選取某列
e = array1[:,3]#選取某些列
f = array1[:,0:3]
g = array1[:,[0,3]]#修改元素
#修改某個元素
array1[1,4] = 100
print(array1)#修改某行元素
array1[3,:] = 100
print(array1)
array1[[0,2],:] = 50
print(array1)

(十)三維數組元素的選取與修改

核心功能:

一、創建三維數組

np.arange().reshape()

  • 功能:生成連續數值并重塑為指定形狀的三維數組
  • 示例array1 = np.arange(48).reshape(2,4,6)
    • np.arange(48)?→ 生成0~47的一維數組
    • .reshape(2,4,6)?→ 重塑為?2層 × 4行 × 6列?的三維數組
  • 結構說明
    • 第一維(深度):2個二維數組(稱為“塊”)
    • 第二維(行):每個塊有4行
    • 第三維(列):每行有6列

二、元素選取與切片

1. 單個元素選取

  • 語法array[depth, row, col]

  • 示例a = array1[1,0,0]?→ 選取第2層(索引1)、第1行(索引0)、第1列(索引0)的元素(值為24

2.?選取某行元素

  • 語法array[depth, row, :]

  • 示例b = array1[0,1,:]?→ 選取第1層(索引0)、第2行(索引1)的所有列(結果為?[6,7,8,9,10,11]

3.?選取連續多行

  • 語法array[depth, start_row:end_row, :]

  • 示例c = array1[0,1:3,:]?→ 選取第1層中第2~4行(索引1到2,左閉右開)的所有列

4.?選取非連續多行

  • 語法array[depth, [rows], :]

  • 示例d = array1[0,[1,3],:]?→ 選取第1層中第2行(索引1)和第4行(索引3)的所有列

5.?選取某列

  • 語法array[depth, :, col]

  • 示例e = array1[1,:,1]?→ 選取第2層中所有行的第2列(索引1)(結果為?[24,25,26,27]

6.?選取多列

  • 方式1:連續列 →?array[depth, :, start_col:end_col]

    • 示例f = array1[1,:,1:4]?→ 選取第2層中所有行的第2~5列(索引1到3,左閉右開)

  • 方式2:非連續列 →?array[depth, :, [cols]]

    • 示例g = array1[1,:,[1,4]]?→ 選取第2層中所有行的第2列(索引1)和第5列(索引4)


三、修改元素
語法array[depth, row, col] = new_value
  • 示例array1[1,0,0] = 100?→ 將第2層、第1行、第1列的元素修改為100
  • 特點就地修改原數組,無返回值

關鍵規則總結:

操作類型語法示例說明
單個元素array[d,r,c]精確定位到某單元格
整行array[d,r,:]冒號表示該維度的全部
連續多行array[d,r_start:r_end,:]左閉右開區間
非連續多行array[d,[r1,r2],:]用列表傳遞非連續索引
單列array[d,:,c]所有行的某一列
多列(連續)array[d,:,c_start:c_end]左閉右開區間
多列(非連續)array[d,:,[c1,c2]]用列表傳遞非連續索引
修改操作array[...] = value直接賦值,原數組被永久修改

代碼示例:

import numpy as nparray1 = np.arange(48).reshape(2,4,6)
print(array1)#選取某個元素
#首先確定選取哪一個二維數組
a = array1[1,0,0]#選取某行元素
b = array1[0,1,:]#選取某些行元素
c = array1[0,1:3,:]
d = array1[0,[1,3],:]#選取某列
e = array1[1,:,1]#選取某些列
f = array1[1,:,1:4]
g = array1[1,:,[1,4]]#修改
array1[1,0,0]=100
print(array1)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/95861.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/95861.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/95861.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

從 Windows 到 Linux 服務器的全自動部署教程(免密登錄 + 壓縮 + 上傳 + 啟動)

一、準備工作 1. 環境說明 本地開發環境:Windows 服務器(需執行部署腳本)目標服務器:Linux 服務器(需安裝 node.js、pm2、unzip)核心工具:7-Zip(壓縮)、OpenSSH&#x…

智能汽車領域研發,復用云原始開發范式?

汽車電子電氣架構演進趨勢:分散的功能ECU -> 域控制器 -> 中央計算服務器汽車電子方案與架構在發展與迭代時會使用虛擬化方法幾種可行的軟硬一體化方案:多ECU,硬件隔離,硬件分區,車規級多核硬件架構 Hypervisor…

數據電臺詢價的詢價要求

技術規格及主要參數 1.電臺基本要求: 1.1 電臺中的信號處理基于FPGA設計,采用FPGAARM高速AD/DA設計架構; 1.2 具備頻譜感知、自主選頻、跳頻、擴頻等功能; 1.3 具備鏈路質量信息、自組網路由信息、電池電壓監測信息、北斗定位信息…

IoT/HCIP實驗-5/基于WIFI的智慧農業實驗(LwM2M/CoAP+PSK+ESP8266 連接到 IoTDA)

文章目錄概述WIFI8266 通信模組WIFI模組也用AT指令?ESP8266 內置協議棧?支持的無線網絡模式MCU通過串口與模組交互Wifi模組做客戶端PC-AT接入路由器向本地TCP服務發數據用代碼接入你家路由器已接入AP(你家Wifi)平臺側開發工程配置和編譯工程…

定時器輸出PWM波配置(呼吸燈)

使用定時器 4 通道 3 生成 PWM 波控制 LED1 ,實現呼吸燈效果。 頻率:2kHz,PSC71,ARR499pwm.c:#include "pwm.h" // 本模塊頭文件:應聲明 pwm_init/pwm_compare_set 等原型、并包含 HAL 頭//(示…

[ai-agent]環境簡介之沙盒e2b vs daytona

所謂的環境的就是agent運行在哪里,或者是agent和那里進行交互。 最常見的環境就是本地開發環境,也就是個人主機,但是存在問題就是沒有辦法出網和橫向擴展。 在沙盒之前也是有其他選擇的: 云服務器, 虛擬機,…

【前端面試題】前端面試知識點(第三十一題到第六十一題)

三十一. CSS實現垂直水平居中 實現元素的垂直水平居中是前端開發中的常見需求,主要有以下幾種思路: text-align + line-height實現單行文本水平垂直居中 適用于單行文本元素,通過text-align: center實現水平居中,line-height等于容器高度實現垂直居中 text-align + vertic…

嵌入式練習項目——————抓包獲取天氣信息

一、內容 嘗試通過實時天氣接口 - 數據接口 - NowAPI此網站獲取天氣信息,實現可以發送城市查詢當前天氣和未來天氣 二、獲取請求報文 可以根據測試示例看到獲取內容,此時數據是cJSON格式,我們首先要通過合適的網址抓包獲取到請求報文&#x…

Python爬蟲實戰:研究NewsCrawl ,構建新浪和網易新聞數據采集系統

1. 引言 1.1 研究背景與意義 在信息時代,新聞作為社會動態、公眾觀點的重要載體,其傳播速度與影響力持續擴大。傳統的人工篩選與采集方式已無法滿足對海量新聞數據的高效處理需求,亟需自動化工具實現大規模、結構化的新聞數據采集。網絡爬蟲技術作為一種按照預設規則自動抓…

PyTorch神經網絡工具箱全解析:nn.Module vs nn.functional

🔍 為何需要神經網絡工具箱? 在僅用 Autograd 和 Tensor 實現模型時,開發者需手動設置參數梯度(requires_gradTrue)、反向傳播(backward())及梯度提取,過程繁瑣且易出錯。nn 工具箱應…

Java注解學習記錄

目錄 一、為什么要學注解? 二、注解是什么? 三、為什么要使用注解? 四、注解的作用 五、注解的分類 5.1 元注解 Retention(/ r??ten?(?)n /) ★★★★★ Target ★★★★★ Inherited(/ ?n?her?t?d /…

43.安卓逆向2-補環境-使用unidbg(使用Smali語法調用方法和使用方法地址調用方法)

免責聲明:內容僅供學習參考,請合法利用知識,禁止進行違法犯罪活動! 內容參考于:圖靈Python學院 工具下載: 鏈接:https://pan.baidu.com/s/1bb8NhJc9eTuLzQr39lF55Q?pwdzy89 提取碼&#xff1…

【Kubernetes知識點問答題】Pod 調度

1. 如何將特定 Pod 調度到指定的節點?可以使用下列方法中的任何一種來選擇 K8s 對特定 Pod 的調度:① 與節點標簽匹配的 nodeSelector:在 Pod 的規范中使用 nodeSelector 字段來指定節點標簽,以便將 Pod 調度到具有特定標簽的節點…

wordpress顯示時間日期的幾種常見的方式

在WordPress中,顯示時間日期有多種常見方式,包括使用默認設置、模板標簽、插件等,以下是詳細介紹: 使用默認設置 WordPress的默認設置允許你在文章列表中顯示文章的發布時間。登錄到WordPress后臺,在“設置”中找到“…

基于飛算JavaAI實現布隆過濾器防止緩存穿透:原理、實踐與全流程解析

引言:當緩存失效時,系統如何避免“雪崩式崩潰”? 在互聯網高并發場景中(如電商秒殺、社交平臺熱點新聞),緩存是提升系統性能的核心手段——將頻繁訪問的數據(如商品詳情、用戶信息)存…

DeepResearch開源與閉源方案對比

在這個AI不再只是聊天工具的時代,"深度研究"已經成為大語言模型(LLM)的一項新能力。先進的LLM不再只是給出快速的一次性回答,而是可以像研究助手一樣工作——搜索網上信息,調用各種工具(比如搜索…

UniApp 頁面傳參方式詳解

在 UniApp 開發中,頁面間參數傳遞是核心功能之一。以下是 8 種常用的傳參方式,每種方式都有其適用場景和特點:一、URL 拼接傳參(最常用) 適用場景:簡單數據傳遞,如 ID、狀態值等基礎類型數據 實…

音頻分類標注工具

pyqt 分類標注工具:import glob import sys import json import os from PyQt5.QtWidgets import (QApplication, QMainWindow, QTableWidget, QTableWidgetItem,QSplitter, QVBoxLayout, QWidget, QPushButton, QRadioButton,QButtonGroup, QLabel, QHBoxLayout, Q…

云計算-Kubernetes+Istio 實現金絲雀發布:流量管理、熔斷、流量鏡像、ingreess、污點及pv案例實戰

介紹 在微服務架構中,如何安全、高效地實現服務發布與流量管理是保障業務穩定性的核心挑戰。金絲雀發布(Canary Release)、灰度發布等策略通過精細化的流量控制,可有效降低新版本上線風險, Istio 作為主流的服務網格(Service Mesh)工具。 此次Istio 在 Kubernetes 集群…

12.web api 3

定時器-間歇函數