【关于numpy的使用】

提示:小白笔记,大佬勿喷。


提示:以下是本篇文章正文内容,下面案例可供参考

一、Numpy是什么?

NumPy 是 Python 语言的一个第三方库,其支持大量高维度数组与矩阵运算。此外,NumPy 也针对数组运算提供大量的数学函数。机器学习涉及到大量对数组的变换和运算,NumPy 就成了必不可少的工具之一。

二、使用步骤

1.Numpy的属性+创建

1.0引入库 and 生成一个2-13的3行4列的二位矩阵

import numpy as np
A=np.arange(2,14).reshape((3,4))#有序矩阵 可以设置步长
print(A)

显示结果如下:

PS E:\备份资料\python> & e:/实用软件/python_exe/python.exe e:/备份资料/python/草稿代码/test.py  
[[ 2  3  4  5]
 [ 6  7  8  9]
 [10 11 12 13]]

1.1.生成0,1矩阵

import numpy as np
a=np.zeros((3,4))
b=np.ones((2,3))
print(a)
print(b)
PS E:\备份资料\python> & e:/实用软件/python_exe/python.exe e:/备份资料/python/草稿代码/test.py  
[[0. 0. 0. 0.]
 [0. 0. 0. 0.]
 [0. 0. 0. 0.]]
[[1. 1. 1.]
 [1. 1. 1.]]

1.2生成空矩阵(接近于零)

import numpy as np
a=np.empty((3,4))
print(a)
PS E:\备份资料\python> & e:/实用软件/python_exe/python.exe e:/备份资料/python/草稿代码/test.py  
[[6.23042070e-307 2.12950997e+133 6.29883914e-307 1.06811422e-306]
 [9.34595530e-307 1.24610383e-306 1.69118108e-306 8.06632139e-308]
 [1.20160711e-306 1.69119330e-306 1.29062229e-306 1.24604136e-306]]

1.3numpy的一些基本属性

import numpy as np
array = np.array({
    
    [f1,2,3],
				[2,3,4]})
print(array)
print('number of dim:', array.ndim)#维度
print('shape:', array.shape)
print('size: ', array.size)#多少元素
a = np.array([2,23,4],dtype=np.float32)#int32 or int64  定义属性
print(a.dtype)
PS E:\备份资料\python> & e:/实用软件/python_exe/python.exe e:/备份资
料/python/草稿代码/test.py
[[1 2 3]
 [2 3 4]]
number of dim: 2
shape: (2, 3)
size:  6
float32

1.4随机生成

import numpy as np
a = np.linspace(1,10, 5)#一条线 生成一个5段的数列 后可跟.reshape((3,4))
print(a)
PS E:\备份资料\python> & e:/实用软件/python_exe/python.exe e:/备份资
料/python/草稿代码/test.py
[ 1.    3.25  5.5   7.75 10.  ]

2.Numpy的基础运算

2.0查看矩阵最大最小值的索引

import numpy as np
A=np.arange(2,14).reshape((3,4))
print(np.argmin(A))
print(np.argmax(A))
PS E:\备份资料\python> & e:/实用软件/python_exe/python.exe e:/备份资料/python/草稿代码/test.py  
[[ 2  3  4  5]
 [ 6  7  8  9]
 [10 11 12 13]]
0
11

2.1.计算矩阵平均值

import numpy as np
A=np.arange(2,14).reshape((3,4))
print(A)
#以下三个都是平均值
print(np.mean(A))
print(np.average(A))
print(A.mean())
print(np.median(A))#中位数
print(np.cumsum(A))#逐个累加
print(np.diff(A))#相邻两个数的差值

PS E:\备份资料\python> & e:/实用软件/python_exe/python.exe e:/备份资料/python/草稿代码/test.py  
[[ 2  3  4  5]
 [ 6  7  8  9]
 [10 11 12 13]]
7.5
7.5
7.5
7.5
[ 2  5  9 14 20 27 35 44 54 65 77 90]
[[1 1 1]
 [1 1 1]
 [1 1 1]]

2.2矩阵的 加减乘除

a = np.array([10,20,30,40])
b = np.arange(4)
print(a, b)
c = a-b
d=b**2
e=10*np.sin(a)#对a的每一个值求sin值再乘以10
print(c)
print(d)
print(e)
print(b)
print(b<3)
################## 乘法 #######################
aa=np.array([[1,1],[0,1]])
bb=np.arange(4).reshape((2,2))
cc=aa*bb
cc_dot=np.dot(a,b)
cc_dot_2=aa.dot(bb)
print(aa)
print(bb)
print(cc,cc_dot,cc_dot_2)
PS E:\备份资料\python> & e:/实用软件/python_exe/python.exe e:/备份资
料/python/草稿代码/test.py
[10 20 30 40] [0 1 2 3]
[10 19 28 37]
[0 1 4 9]
[-5.44021111  9.12945251 -9.88031624  7.4511316 ]
[0 1 2 3]
[ True  True  True False]
[[1 1]
 [0 1]]
[[0 1]
 [2 3]]
[[0 1]
 [0 3]] 200 [[2 4]
 [2 3]]

2.3矩阵的基本操作

import numpy as np
A = np.arange(2,14).reshape((3,4))
print(np.sort(A))#逐行从小到大排序排序
print(np.nonzero(A))#找除非0数所在的位置
print(np.transpose(A))#反向,行变列,列变行=>A.T
print(np.clip(A,5,9))#矩阵A中小于5的数全变成5,大于9的数全变成9

PS E:\备份资料\python> & e:/实用软件/python_exe/python.exe e:/备份资
料/python/草稿代码/test.py
[[ 2  3  4  5]
 [ 6  7  8  9]
 [10 11 12 13]]
(array([0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2], dtype=int64), array([0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3], dtype=int64))
[[ 2  6 10]
 [ 3  7 11]
 [ 4  8 12]
 [ 5  9 13]]

[[5 5 5 5]
 [6 7 8 9]
 [9 9 9 9]]

3.numpy的索引

3.0 索引基础操作

import numpy as np
A=np.arange(3,15)#一维
print(A)
print(A[3])
B=np.arange(3,15).reshape((3,4))#二维
print(B)
print(B[2])#第二行
print(B[0,2])#也可以B[1,1:3]
[ 3  4  5  6  7  8  9 10 11 12 13 14]
6
[[ 3  4  5  6]
 [ 7  8  9 10]
 [11 12 13 14]]
[11 12 13 14]
5

3.1 for 循环迭代 矩阵

import numpy as np
B=np.arange(3,15).reshape((3,4))#二维
print(B)
for row in B:
    print(row)
for column in B.T:
    print(column)
print(B.flatten())
for item in B.flat:#B.flat是一个迭代器
    print(item)
PS E:\备份资料\python> & e:/实用软件/python_exe/python.exe e:/备份资 
料/python/草稿代码/test.py
[[ 3  4  5  6]
 [ 7  8  9 10]
 [11 12 13 14]]
 
[3 4 5 6]
[ 7  8  9 10]
[11 12 13 14]

[ 3  7 11]
[ 4  8 12]
[ 5  9 13]
[ 6 10 14]
#<numpy.flatiter object at 0x0000023147194230>
[ 3  4  5  6  7  8  9 10 11 12 13 14]
3
4
5
6
7
8
9
10
11
12
13
14

4.numpy的array 合并

4.0

import numpy as np
A=np.array([1,1,1])
B=np.array([2,2,2])
C=np.hstack((A,B))#左右合并
print(np.vstack((A,B)))#上下合并
print(C)
print(A[:,np.newaxis])#纵向加一个维度 变成纵向的1
[[1 1 1]
 [2 2 2]]
 
 [1 1 1 2 2 2]

[[1]
 [1]
 [1]]

4.1合并的第二种方法

import numpy as np
A=np.array([1,1,1])[:,np.newaxis]
B=np.array([2,2,2])[:,np.newaxis]
C=np.concatenate((A,B,B,A),axis=1)#横向合并
print(C)
[[1 2 2 1]
 [1 2 2 1]
 [1 2 2 1]]

5.numpy的array分割

5.0

import numpy as np
A=np.arange(12).reshape((3,4))
print(A)
print(np.split(A,2,axis=1))#按列进行分割 分割成两块  不能进行不等的分割
print(np.vsplit(A,3))
print(np.hsplit(A,2))
PS E:\备份资料\python> & e:/实用软件/python_exe/python.exe e:/备份资
料/python/草稿代码/test.py
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
[array([[0, 1],
       [4, 5],
       [8, 9]]), array([[ 2,  3],
       [ 6,  7],
       [10, 11]])]

[array([[0, 1, 2, 3]]), array([[4, 5, 6, 7]]), array([[ 8,  9, 10, 11]])]
[array([[0, 1],
       [4, 5],
       [8, 9]]), array([[ 2,  3],
       [ 6,  7],
       [10, 11]])]
       

6.只关联值 copy

在这里插入图片描述


Guess you like

Origin blog.csdn.net/wangjin56789/article/details/122123040