np歸納總結(全)第一天


1.概述

1.np.array()  # 將列表轉換為數組

import numpy as np

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

2..shape  # 打印矩陣的維度, 也可以使用np.shape

import numpy as np

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

2.array 結構

3.dtype 打印數組的數據類型

import numpy as np 
tang_array = [1, 2, 3, 4]
tang_array = np.array(tang_array)

print(tang_array.dtype)

4. .itemsize # 判斷數組中每一個數字所占的字節數

print(tang_array.itemsize)

5. .size # 打印出數組中的元素個數, 不關心矩陣的維度

print(tang_array.size)

6. .ndim # 打印數組中的維度信息

print(tang_array.ndim)

7. .fill(0)  # 表示對當前數據進行填充,0表示填充的值

# .fill 對當前數據進行填充
tang_array = np.array([1, 2])
tang_array.fill(0)
print(tang_array)

8. numpy索引與切片

tang_array = np.array([1, 2, 3, 4])
print(tang_array[0])
print(tang_array[-2:])

9 .copy # 進行淺拷貝

tang_array2 = tang_array.copy()

10 .dtype設置數組類型 將列表轉換為bool值根據bool值進行取值操作

tang_array = np.arange(0, 100, 10)
# 將列表轉換為Bool值
bool_array = np.array([1, 0, 0, 1, 1, 1, 1, 0, 0, 0], dtype=bool)
# 根據bool值進行取值
print(tang_array[bool_array])

11.根據大於或者小於獲得bool值根據bool值進行取值操作

tang_array = np.random.rand(10)
print(tang_array)
bool_array = tang_array > 0.5
print(bool_array)

12. np.where 對bool值進行操作,獲得True的索引值

tang_array = np.random.rand(10)
bool_array = tang_array > 0.5
index = np.where(bool_array)
print(index)
print(tang_array[index])

13 .ndtype # 輸出字節數

print(tang_array.nbytes)

14. .astype # 進行數據類型的轉換,但是實際數據不發生改變

tang_array2 = tang_array.astype(np.float32)
print(tang_array2.dtype)

15. np.object格式,保存了數據的原來格式

array = np.array([1, 10, 3.5, 'str'], dtype=np.object)

3.數值計算

16. .sum(axis=0) # 進行數組的加和操作

import numpy as np

tang_array = np.array([[1, 2, 3],
                       [4, 5, 6]])
# 對axis=0,進行行與行進行加和
print(tang_array.sum(axis=0))
# 進行所有數據的加和
print(tang_array.min(axis=0))
 
         

 

print(tang_array.sum())
print(tang_array.sum(axis=-1))

17. .prod(axis=0) # 進行數組之間的乘積操作,axis=0表示行與行之間進行乘積

print(tang_array.prod())  # 所有元素進行相乘操作
print(tang_array.prod(axis=1))

18. .min(axis=0) 找出數組中數據最小的值,axis=0表示找出每一列的最小值,從上到下的操作

print(tang_array.min(axis=0))

19 .max(axis=0) # 找出數組中數據最大值的操作

print(tang_array.max(axis=0))

20  .argmax(axis=1) # 找出數組中每一行的最大值的位置

print(tang_array.argmax(axis=1))

21 .mean(axis=1)  # 找出數組中每一行均值的大小

print(tang_array.mean(axis=1))

22. std(axis=1) # 求出數組中每一行的標准差

print(tang_array.std(axis=1))

23. .var(axis=1) # 求出數組中每一行的方差

print(tang_array.var(axis=1))

24. .clip(2, 4)進行數據的范圍限制, 小於2的用2表示,大於4的用4表示

print(tang_array.clip(2, 4))

25. .round(decimals=1) # 進行四舍五入,decimals表示保留小數點的后幾位數

tang_array = np.array([1.12, 2.12, 3.12, 4.6])
print(tang_array.round(decimals=1))

4.排序

26. np.sort(value, axis=0)# 對數據進行排序操作

import numpy as np
tang_array = np.array([[1.5, 1.3, 7.5],
                       [5.6, 7.8, 1.2]])
# 對每一列進行排序
print(np.sort(tang_array, axis=0))

27.  .argsort(axis=0) # 打印排序后的索引位置

print(tang_array.argsort(axis=0))

28. np.linspace(0, 10, 11) # 進行范圍的數據拆分

tang_array = np.linspace(0, 10, 11)

29. np.searchsorted(tang, value) # 將value插入tang_array 返回的是插入后的索引值

print(np.searchsorted(tang_array, value))

30. np.lexsort  # 指定列隊數組進行排序操作

tang_array = np.array([[1, 0, 6],
                       [2, 7, 0],
                       [3, 3, 1],
                       [2, 4, 0]])

index = np.lexsort([tang_array[:, 2]])
print(tang_array[index])

 5-數組形狀

31. np.reshape(value, (2, 5)) # 進行矩陣的維度變化

tang_array = np.arange(10)
print(tang_array.shape)
# 通過.shape改變數據的維度
tang_array.shape = 2, 5
print(np.reshape(tang_array, (2, 5)))
print(tang_array)

32. np.newaxis # 表示增加一個矩陣維度

# 新增加一個維度 np.newaxis
tang_array = np.array([[1, 2],
                       [3, 4]])
tang_array = tang_array[:, :, np.newaxis]
print(tang_array.shape)

33 .squeeze(axis=3)  # 表示指定一個維度進行去除

print(tang_array.squeeze(axis=3).shape)

34 .transpose() 表示進行轉置操作

tang_array = np.arange(0, 10, 1)
tang_array.shape = 2, 5
print(tang_array.transpose())

 35. np.concatenate((a, b), axis=0)  # 進行矩陣的串接操作,(a, b)表示需要串接的tuple,axis=0進行上下的串接

a = np.array([[123, 456, 789], [3234, 456, 134]])
b = np.array([[123, 456, 789], [123, 546, 134]])
c = np.concatenate((a, b), axis=0)
print(c)

36. np.vstack((a, b)) # 進行矩陣的上下位置上的串接

c = np.vstack((a, b))
print(c)

37. np.hstack((a, b)) # 進行矩陣左右位置上的串接

c = np.hstack((a, b))
print(c)

38. .flatten() # 進行拉平操作,拉成一個維度

print(c.flatten())

39. .ravel()  # 進行拉平操作,也是拉成一個維度

print(c.ravel())

 

6-數組生成

40. np.arange(0, 10, 1)   # 0表示開始,10表示結束,1表示中間間隔

import numpy as np
# 根據np.arange進行數組1表示開始位置,10表示末位置, 2表示間隔
print(np.arange(1, 10, 2, dtype=np.float32))

41. np.linspace(0, 9, 10)  # 0表示起始位置,9表示結束,10表示拆分成10份

print(np.linspace(0, 9, 10))

42. np.logspace(0, 1, 11)  # 0表示起始位置, 1表示終止位置,11表示拆成11分,然后在輸入

print(np.logspace(0, 1, 11))  #等價於10**0.1

43. np.meshgrid(x, y)   # 生成一個網格矩陣

x = np.linspace(0, 10, 11)
y = np.linspace(10, 20, 11)
x, y = np.meshgrid(x, y)
print(x)
print(y)

44. np.r_[0:10:1] 構造一個行向量

print(np.r_[0:10:1])

45. np.c_[0:10:1] # 構造一個列向量

print(np.c_[0:10:1])

46. np.zeros(3)

import numpy as np
# np.zeros 構造一個零矩陣
print(np.zeros(3))
print(np.zeros((2, 3)))

47. np.ones((3, 3))  # np.ones((3, 3))  表示3*3的維度

print(np.ones((3, 3)))

48. np.empty(size)  生成一個空矩陣

a = np.empty(6)
print(a)

49 np.zeros_like() 生成一個維度相同的零矩陣

tang_array = np.array([1, 2, 3, 4, 5])
tang_array2 = np.zeros_like(tang_array)
print(tang_array2)

50  np.ones_like() 生成一個維度相同的1矩陣

tang_array3 = np.ones_like(tang_array)
print(tang_array3)

51 np.identity(5)  # 生成一個形狀是5的單位矩陣

print(np.identity(5))

 

7-運算

52. np.multiply(x, y) #將x和y進行對應位置相乘操作

import numpy as np 

x = np.array([5, 5])
y = np.array([2, 2])
# np.multiply(x, y) 將x和y進行對應位置相乘操作
print(np.multiply(x, y))

53. np.dot(x, y) #將x和y進行點乘操作,即矩陣運算(2, 1) * (1, 2) = (2, 2)

print(np.dot(x.reshape(2, 1), y.reshape(1, 2)))

54 # ndarray會進行數據的自動補全操作

x = np.array([1, 1, 1])
y = np.array([[1, 2, 3], [3, 4, 5]])
print(x + y)

55 np.logical_and # 如果兩個都是真的就是真

x = np.array([1, 0, 1])
y = np.array([1, 1, 0])
print(x==y)
print(np.logical_and(x, y))

56. np.logical_or # 如果兩個中有一個為真就是真

print(np.logical_or(x, y))

57. np.logical_not # 如果第二個數為1就是1,否者兩個數都為0,等於1

print(np.logical_not(x, y))

 

8-隨機矩陣

58. np.random.rand(3, 2)  # 構造一個(3, 2)的隨機矩陣

import numpy as np
# 構造一個0,1之間的隨機矩陣
print(np.random.rand(3, 2))

59. np.random.randint(0, 3, size=(2, 5))  # 構造一個0到2的隨機整數矩陣,矩陣的維度是2,5

print(np.random.randint(0, 3, size=(5, 4)))

60 np.random.sample() # 返回一個0到1的隨機數

print(np.random.sample())

61. np,random.uniform(0, 3, size=(2, 5)) # 從一個均勻的分布中隨機取值

print(np.random.uniform(0, 1, size=(1, 1)))

62. np.random.normal(mu, sigma, size)  # 根據均值和標准差進行隨機生成高斯矩陣

m = 0
sigma = 0.1 #標准差
print(np.random.normal(m, sigma, size=(10, 1)))

63. np.set_printoptions(precision=3) # 進行輸出的精度設置,3表示的小數點的個數

np.set_printoptions(precision=3)
mu, sigma = 0, 0.1
n = np.random.normal(mu, sigma, 10)
print(n)

64 np.random.shuffle()  #對樣本進行洗牌操作

tang_array = np.arange(0, 10, 1)
np.random.shuffle(tang_array)
print(tang_array)

65 np.random.seed(100)  # 設置隨機種子,讓每次隨機獲的參數的結果相同,為了更好的進行對比

np.random.seed(100)

x = np.random.normal(0, 0.1, size=(1, 10))
print(x)

 

9-讀寫

66. np.loadtxt('tang.txt', delimiter=",", skiprows=1), delimiter 表示分割符, skiprows表示去除第一行, usecols指定使用那幾列數據

y = np.loadtxt('tang.txt', delimiter=',', skiprows=1)
print(y)

67. np.savetxt('tang2.txt', tang_array, fmt='%.2f', delimiter=',')

tang_array = np.array([[1, 2, 3], [4, 5, 6]], dtype=np.float32)
np.savetxt('tang2.txt', tang_array, fmt='%.2f', delimiter=',')

68. 進行單個array參數的載入和讀取,保存的格式是npy

tang_array = np.array([1, 2, 3, 4], dtype=np.float32)

np.save('tang3.npy', tang_array)  # 寫入文件

tang_array = np.load('tang3.npy')  # 讀取文件
print(tang_array)

69. 進行多個array參數的載入和讀取,使用的是np.savez,保存的格式是.npz,讀取時使用key

tang_array = np.array([1, 2, 3, 4], dtype=np.float32)
tang_array2 = np.array([4, 5, 6, 7], dtype=np.float32)

np.savez('tang.npz', a=tang_array, b=tang_array2)

data = np.load('tang.npz')
print(data['a'])
print(data['b'])

 

練習題-1 

70. np.__version__  # 打印numpy當前的版本

import numpy as np
print(np.__version__)

71 # 構造一個全零矩陣,並打印其所占內存數

z = np.zeros((5, 5))
print(z.size * z.itemsize)
print(z.nbytes)

72 # 打印一個函數的幫助文檔 help(np.info(np,add)) 

print(help(np.info(np.add)))

73. # 創建一個10-49的數組,並將其倒序排列

tang_array = np.arange(10, 50, 1)
tang = tang_array[::-1]
print(tang)

74  np.nonzero(tang_array) # 找出一個數組中不為0的索引值

print(np.nonzero([1, 2, 3, 4, 5, 0, 0, 3]))

75 # 隨機構造一個3*3矩陣, 打印其最大值和最小值

np.random.seed(9)
tang_array = np.random.randint(0, 10, size=(5, 6))
print(tang_array.min())
print(tang_array.max())

76 np.pad(tang_array, add_size, 'constant', constant_values=0) 構造一個5*5的矩陣,令其值為1,在最外層加上一圈0

tang_array = np.ones((5, 5))
tang_array2 = np.pad(tang_array, 1, 'constant', constant_values=0)
print(tang_array2)

77.  np.unravel_index(100, (6, 7, 8))   # 構建一個shape為(6, 7, 8)的矩陣,並找出第100個元素的索引值

print(np.unravel_index(100, (6, 7, 8)))

78. # 對一個5*5矩陣做0到1歸一化操作

tang_array = np.random.random((5, 5))
tang_array = (tang_array - tang_array.min()) / (tang_array.max() - tang_array.min())

79. np.intersect1d(z1, z2)  # 找出兩個數組相同的數

 np.random.randint(0, 11, 10)
z2 = np.random.randint(0, 11, 10)
print(np.intersect1d(z1, z2))

80. np.datetime64('today', 'D')  np.timedelta64(1, 'D') # 得到昨天今天明天

yesterday = np.datetime64('today', 'D') - np.timedelta64(1, 'D')
today = np.datetime64('today', 'D')
tomorrow = np.datetime64('today', 'D') + np.timedelta64(1, 'D')
print(yesterday)

81. 得到一個月中所有的天數

print(np.arange('2017-10', '2017-11', dtype='datetime64[D]'))

82. np.floor(value) # 取出一個數的整數部分

tang_array = np.random.uniform(0, 10, 10)
print(np.floor(tang_array))

83 z.flags.writeable # 使得這個數組不能被改變

z = np.zeros(5)
z.flags.writeable = False
z[0] = 1

84. np.set_printoptin(threshold=np.nan)  # 使得數組全部打印出來

np.set_printoptions(threshold=np.nan)
z = np.zeros((5, 5))
print(z)

85.# 在一個數組中,找出最接近一個數的索引

z = np.arange(100)
v = np.random.uniform(0, 100)
print(v)
index = np.abs(z - v).argmin()
print(index)

86 # 進行float32與int32的類型轉換

z = np.arange(10, dtype=np.float32)
l = z.astype(np.int32)
print(l.dtype)

87. # 打印數組的元素坐標與值

z = np.arange(9).reshape(3, 3)
for index, value in np.ndenumerate(z):
    print(index, value)

88. 按照數組的某一列進行排序

z = np.random.randint(0, 10, (4, 3))
print(z[z[:, 1].argsort()])

89. np.bincount(tang_array) # 統計數組中元素的個數

z = np.array([1, 1, 1, 2, 2, 3, 4, 5])
print(np.bincount(z))

90. 對最后兩個維度進行加和操作

tang_array = np.random.randint(0, 10, (4, 4, 4, 4))
print(tang_array.sum(axis=(-2, -1)))

91 # 交換矩陣的兩行

tang_array = np.random.randint(0, 10, (3, 4))
tang_array[[1, 2]] = tang_array[[2, 1]]
print(tang_array)

92 #找出數組中最常出現的數字

z = np.random.randint(0, 10, 10)
print(np.bincount(z).argmax())

93 np.argpartition(-z, n)[:n]    #找出K個最大值的索引和值

z = np.arange(10000)
np.random.shuffle(z)
n = 5
print(np.argpartition(-z, n)[:n])

94. np.all(x==y, aixs=1) #找出一行中都相同的數,打印True

# 找出所有元素都相同的數據
x = np.array([[1, 1]])
p = np.array([[1, 1]])
print(np.all(x == p, axis=1))

z = np.random.randint(0, 5, (10, 3))
print(np.all(z[:, 1:]==z[:, :-1]))

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM