【算法设计与分析】最大流应用问题

2021-07-21集成学习第三次大作业

  返回  

PythonNumpy学习笔记

2021/7/21 1:36:01 浏览:

Numpy学习笔记

文章目录

  • Numpy学习笔记
    • numpy的基础属性
    • numpy创建矩阵(数组)
    • numpy的基础运算
      • 加减乘除,最大值,最小值,求和
      • 打印最大值、最小值的索引,打印平均值,累加值,累差值,非零值的索引,排序,转置,二值化阈值(clip()函数)
    • numpy的索引
    • numpy的array合并
    • numpy的分割
    • numpy的复制

numpy的基础属性

import numpy as np
array = np.array([[1,2,3],[4,5,6]]) #将列表转化为矩阵
print(array)
print('number of dim:',array.ndim)#矩阵的行数数
print('shape:',array.shape)#几行几列
print('size:',array.size)#矩阵的元素

numpy创建矩阵(数组)

import numpy as np
array = np.array([[1,2,3],
                  [1,2,3],
                  [1,2,3]])
print(array.ndim)
'''
2
'''
#生成全部为0的矩阵
array_1 = np.zeros((3,4),dtype=int)
print('{}\n'.format(array_1))
'''
[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
'''
#生成全部为1的矩阵
array_2 = np.ones((3,4),dtype=int)
print('{}\n'.format(array_2))
'''
[[1 1 1 1]
 [1 1 1 1]
 [1 1 1 1]]
'''
#生成范围中所有数的矩阵
array_3 = np.arange(12)
print('{}\n'.format(array_3))
'''
[ 0  1  2  3  4  5  6  7  8  9 10 11]
'''
#生成范围中所有数的矩阵且行列数改变
array_4 = np.arange(12).reshape(3,4)
print('{}\n'.format(array_4))
'''
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
'''
#生成等差矩阵
array_5 = np.linspace(1,10,4,dtype=int).reshape(2,2)
print('{}\n'.format(array_5))
'''
[[ 1  4]
 [ 7 10]]
'''

numpy的基础运算

加减乘除,最大值,最小值,求和

import numpy as np
a = np.array([10,20,30,40]).reshape(2,2)
b = np.arange(4).reshape(2,2)
print(a)
print(b)
 '''
 [[10 20]
 [30 40]] 
 [[0 1]
 [2 3]]
 '''
print(a+b)#各元素与其对应元素相加
'''
[[10 21]
 [32 43]]
'''
print(a-b)#各元素与其对应元素相减
'''
[[10 19]
 [28 37]]
'''
#矩阵中各个元素先平方再乘10
c = 2*(a**2) 
print(c)
'''
[[ 200  800]
 [1800 3200]]
'''
#矩阵的乘法
d = np.dot(a, b)
print(d)
'''
[[ 40  70]
 [ 80 150]]
'''
#同
d = a.dot(b)
print(d)
'''
[[ 40  70]
 [ 80 150]]
'''
#矩阵中各项元素乘2
e = b*2
print(e)
'''
[[0 2]
 [4 6]]
'''
#求矩阵元素的和、最大值、最小值
print(a.sum())#100
print(a.max())#40
print(a.min())#10
#axis=0比较列之间,axis=1比较行之间
print(a.max(axis=0))#[30 40]
print(a.max(axis=1))#[20 40]
print(a.sum(axis=0))#[40 60]
print(a.sum(axis=1))#[30 70]

打印最大值、最小值的索引,打印平均值,累加值,累差值,非零值的索引,排序,转置,二值化阈值(clip()函数)

import numpy as np
a = np.arange(14,2,-1).reshape(3,4)
print(a)
'''
[[14 13 12 11]
 [10  9  8  7]
 [ 6  5  4  3]]
'''
#打印最小值、最大值的索引
print(a.argmin()) #11
print(a.argmax()) #0
#打印平均值
print(np.average(a)) #8.5
#打印中位数
print(np.median(a)) #8.5
#累加值
print(np.cumsum(a))
'''
[ 14  27  39  50  60  69  77  84  90  95  99 102]
'''
#累差值
print(np.diff(a))
'''
[[-1 -1 -1]
 [-1 -1 -1]
 [-1 -1 -1]]
'''
#找出矩阵中非零值,输出的第一个列表是行数,第二个列表是列数
print(np.nonzero(a))
'''
(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))
'''
#逐行进行排序
print(np.sort(a))
'''
[[11 12 13 14]
 [ 7  8  9 10]
 [ 3  4  5  6]]
'''
#矩阵的转置
print(np.transpose(a))
print(a.T)
'''
[[14 10  6]
 [13  9  5]
 [12  8  4]
 [11  7  3]]
 
[[14 10  6]
 [13  9  5]
 [12  8  4]
 [11  7  3]]
'''
#clip这个函数将将数组中的元素限制在a_min, a_max之间,大于a_max的就使得它等于 a_max,小于a_min,的就使得它等于a_min。
print(np.clip(a,5,10))
'''
[[10 10 10 10]
 [10  9  8  7]
 [ 6  5  5  5]]
'''

numpy的索引

import numpy as np
a = np.arange(3,15).reshape(3,4)
print(a)
'''
[[ 3  4  5  6]
 [ 7  8  9 10]
 [11 12 13 14]]
'''
#输出第二行的第2,3个元素
print(a[1,1:3])
print('\n')
'''
[8 9]
'''
#输出行
for row in a:
    print(row)
print('\n')
'''
[3 4 5 6]
[ 7  8  9 10]
[11 12 13 14]
'''
#打印矩阵中的各列元素,先转置,再循环
for row in a.T:
    print(row)
print('\n')
'''
[ 3  7 11]
[ 4  8 12]
[ 5  9 13]
[ 6 10 14]
'''
#将矩阵转化为一行的序列
b = a.flatten()
print(b)
'''[ 3  4  5  6  7  8  9 10 11 12 13 14]'''
#输出矩阵的所有元素
for item in a.flat:
    print(item)
'''
3
4
5
6
7
8
9
10
11
12
13
14
'''

numpy的array合并

import numpy as np
a = np.array([1,1,1])
print(a)
'''[1,1,1]'''
b = np.array([2,2,2])
print(b)
'''[2,2,2]'''
#垂直合并 vertical stack
c=np.vstack((a,b))
print(c)
'''
[[1 1 1]
 [2 2 2]]
'''
#左右合并 horizontal stack
d=np.hstack((a,b))
print(d)
'''[1 1 1 2 2 2]'''
##多个矩阵合并,axis = 0 横向合并 axis = 1纵向合并
e = np.concatenate((a,b,b,a), axis=0)
print(e)
'''
[1 1 1 2 2 2 2 2 2 1 1 1]
'''

numpy的分割

import numpy as np
a = np.arange(12).reshape(3,4)
print(a)
'''
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
'''
#0 上下分割 1 左右分割,不能进行不等分割
b = np.split(a,3,0)
print(b)
'''
[array([[0, 1, 2, 3]]), array([[4, 5, 6, 7]]), array([[ 8,  9, 10, 11]])]
'''
c = np.split(a,2,1)
print(c)
'''
[array([[0, 1],
       [4, 5],
       [8, 9]]), array([[ 2,  3],
       [ 6,  7],
       [10, 11]])]
'''
#纵向分割、横向分割
e = np.vsplit(a,3)
f = np.hsplit(a,2)
print(e)
'''
[array([[0, 1, 2, 3]]), array([[4, 5, 6, 7]]), array([[ 8,  9, 10, 11]])]
'''
print(f)
'''
[array([[0, 1],
       [4, 5],
       [8, 9]]), array([[ 2,  3],
       [ 6,  7],
       [10, 11]])]
'''

numpy的复制

import numpy as np
#浅复制和深复制
#浅复制:相当于b指向a的地址
a = np.arange(4)
print(a)
'''
[0 1 2 3]
'''
b = a
print('a更新前b的值',b)
'''
a更新前b的值 [0 1 2 3]
'''
a[0] = 150
print('a更新后b的值',b)
'''
a更新后b的值 [150   1   2   3]
'''
print('a更新后a的值',a)
'''
a更新后a的值 [150   1   2   3]
'''
b[2] = 15
print('b更新后a的值',a)
'''
b更新后a的值 [150   1  15   3]
'''
#深复制:开辟新的内存空间,将原有数据赋值进去,再将新的变量指向新的内存地址
c = np.copy(a)
print('深复制下a更新前c的值',c)
'''
深复制下a更新前c的值 [150   1  15   3]
'''
a[0] = 6
print('a更新后a的值',a)
'''
a更新后a的值 [ 6  1 15  3]
'''
print('深复制下a更新后c的值',c)
'''
深复制下a更新后c的值 [150   1  15   3]
'''

新后a的值’,a)
‘’’
a更新后a的值 [150 1 2 3]
‘’’
b[2] = 15
print(‘b更新后a的值’,a)
‘’’
b更新后a的值 [150 1 15 3]
‘’’
#深复制:开辟新的内存空间,将原有数据赋值进去,再将新的变量指向新的内存地址
c = np.copy(a)
print(‘深复制下a更新前c的值’,c)
‘’’
深复制下a更新前c的值 [150 1 15 3]
‘’’
a[0] = 6
print(‘a更新后a的值’,a)
‘’’
a更新后a的值 [ 6 1 15 3]
‘’’
print(‘深复制下a更新后c的值’,c)
‘’’
深复制下a更新后c的值 [150 1 15 3]
‘’’


联系我们

如果您对我们的服务有兴趣,请及时和我们联系!

服务热线:18288888888
座机:18288888888
传真:
邮箱:888888@qq.com
地址:郑州市文化路红专路93号