numpy.ndarray练习
要求如下:
• 创建 2*2 的数组arr1 元素自定义
• 创建 2*2*3 的数组arr2 元素自定义
• 查看arr2的维度以及形状
• 将arr2转为1维
• 将arr1进行转置
• 生成 4*4 全为1的数组 arr3
• 生成 单位矩阵
创建 2*2 的数组arr1 元素自定义
将arr1进行转置
import numpy as np
# 打印numpy.ndarray信息
def print_arr_details(msg:str,arr:np.ndarray):
print(msg,':','ndim=',arr.ndim,'shape=',arr.shape,'vaule=',arr)
if __name__ == '__main__':
#函数会维护一个特殊属性__annotations__,这是一个字典,其中的“键”是被注解的形参名,“值”为注解的内容
print(print_arr_details.__annotations__) #{'msg': <class 'str'>, 'arr': <class 'numpy.ndarray'>}
#创建 2*2 的数组arr1 元素自定义
#(行,列)
arr1_01 = np.array([[2,3],[5,6]])
print_arr_details('arr1_01',arr1_01) #arr1_01 : ndim= 2 shape= (2, 2) vaule= [[2 3][5 6]]
#reshape 一维转多维
arr1_02 = np.array(range(10,30,6)).reshape(2,2)
arr1_03 = np.arange(10,30,6).reshape(2,2)
print_arr_details('arr1_02', arr1_02) #arr1_02 : ndim= 2 shape= (2, 2) vaule= [[10 16][22 28]]
print_arr_details('arr1_03', arr1_03) #arr1_03 : ndim= 2 shape= (2, 2) vaule= [[10 16][22 28]]
#将arr1进行转置
# 数组转置
# arr.transpose()
arr1_04 = arr1_03.transpose()
print_arr_details('arr1_04', arr1_04)
#arr1_04 : ndim= 2 shape= (2, 2) vaule= [[10 22][16 28]]
# arr.T
arr1_05 = arr1_03.T
print_arr_details ( 'arr1_05', arr1_05 )
# arr1_05 : ndim= 2 shape= (2, 2) vaule= [[10 22][16 28]]
#换轴
arr1_06 = arr1_03.swapaxes(1,0)
print_arr_details ( 'arr1_06', arr1_06 )
# arr1_06 : ndim= 2 shape= (2, 2) vaule= [[10 22][16 28]]
创建 2*2*3 的数组arr2 元素自定义
查看arr2的维度以及形状
将arr2转为1维
import numpy as np
# 打印numpy.ndarray信息
def print_arr_details(msg:str,arr:np.ndarray):
print(msg,':','ndim=',arr.ndim,'shape=',arr.shape,'vaule=',arr)
if __name__ == '__main__':
#函数会维护一个特殊属性__annotations__,这是一个字典,其中的“键”是被注解的形参名,“值”为注解的内容
print(print_arr_details.__annotations__) #{'msg': <class 'str'>, 'arr': <class 'numpy.ndarray'>}
#创建 2*2*3 的数组arr2 元素自定义 (块,行,列)
arr2_01 = np.array([[[ 1,1,2],[1,2,2]],[[2,1,1],[2,2,2]]])
print_arr_details('arr2_01', arr2_01) #arr2_01 : ndim= 3 shape= (2, 2, 3) vaule= [[[1 1 2][1 2 2]][[2 1 1][2 2 2]]]
arr2_02 = np.arange(0, 24, 2).reshape(2, 2, 3)
print_arr_details('arr2_02', arr2_02)#arr2_02 : ndim= 3 shape= (2, 2, 3) vaule= [[[ 0 2 4][ 6 8 10]][[12 14 16][18 20 22]]]
#将arr2转为1维
arr_01 = arr2_02.reshape(-1)
print_arr_details('arr_01', arr_01)
#arr_01 : ndim= 1 shape= (12,) vaule= [ 0 2 4 6 8 10 12 14 16 18 20 22]
arr_02 = arr2_02.flatten () #扁平化
print_arr_details ( 'arr_02', arr_02 )
#arr_02 : ndim= 1 shape= (12,) vaule= [ 0 2 4 6 8 10 12 14 16 18 20 22]
arr_03 = arr2_02.ravel () #分散化
print_arr_details ( 'arr_03', arr_03 )
#arr_03 : ndim= 1 shape= (12,) vaule= [ 0 2 4 6 8
生成 4*4 全为1的数组 arr3
生成4阶单位矩阵
import numpy as np
# 打印numpy.ndarray信息
def print_arr_details(msg:str,arr:np.ndarray):
print(msg,':','ndim=',arr.ndim,'shape=',arr.shape,'vaule=',arr)
# 构造单位矩阵的方法
# 返回一个n维的单位矩阵
def Create_identity_matrix(n:int)->np.arange:
'''
构造单位矩阵的方法:返回一个n维的单位矩阵
'''
arr = np.arange(n**2).reshape(n,n)
#print(arr)
for i in range(n):
for j in range(n):
arr[i,j] = 1 if i == j else 0
return arr
if __name__ == '__main__':
#生成 4*4 全为1的数组 arr3
arr3 = np.ones ((4,4))
print_arr_details('arr3',arr3)
# arr3 : ndim= 2 shape= (4, 4) vaule= [[1. 1. 1. 1.][1. 1. 1. 1.][1. 1. 1. 1.][1. 1. 1. 1.]]
#生成4阶单位矩阵
arr4 = np.identity(4)
print_arr_details ( 'arr4', arr4)
#arr4 : ndim= 2 shape= (4, 4) vaule= [[1. 0. 0. 0.][0. 1. 0. 0.][0. 0. 1. 0.][0. 0. 0. 1.]]
print(Create_identity_matrix(5))
'''
[[1 0 0 0 0]
[0 1 0 0 0]
[0 0 1 0 0]
[0 0 0 1 0]
[0 0 0 0 1]]
'''
matplotlib读取图片
import numpy as np
import matplotlib.image as img
from matplotlib import pyplot as plt
# 打印numpy.ndarray信息
def print_arr_details(msg:str,arr:np.ndarray):
print(msg,':','ndim=',arr.ndim,'shape=',arr.shape,'vaule=',arr)
if __name__ == '__main__':
img = img.imread('timg.gif')
#print(type(img))
print_arr_details('img',img)
plt.figure ( "timg.gif" ) # 图像窗口名称
plt.imshow ( img )
plt.show()
‘’’
img : ndim= 3 shape= (380, 500, 4) vaule= [[[ 84 51 72 255]
[ 58 59 56 255]
[ 58 59 56 255]
…
[136 132 135 255]
[199 181 174 255]
[202 200 200 255]]
[[ 71 69 71 255]
[ 58 59 56 255]
[ 80 67 53 255]
…
[153 150 151 255]
[170 166 165 255]
[173 181 172 255]]
[[ 86 73 69 255]
[ 80 67 53 255]
[ 87 83 71 255]
…
[139 148 139 255]
[171 155 167 255]
[166 155 153 255]]
…
[[116 106 104 255]
[137 118 103 255]
[137 104 101 255]
…
[ 84 51 72 255]
[ 20 1 0 255]
[ 75 18 37 255]]
[[137 118 103 255]
[116 106 104 255]
[147 134 119 255]
…
[ 48 32 21 255]
[ 20 1 0 255]
[ 73 37 24 255]]
[[120 115 104 255]
[152 118 103 255]
[137 118 103 255]
…
[ 27 20 7 255]
[ 45 1 3 255]
[ 75 18 37 255]]]
Process finished with exit code 0
‘’’