python数据分析numpy第二次作业20200821

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

‘’’
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Narutolxy/article/details/108150153