第六节课numpy函数练习作业
练习
- 创建 2*2 的数组arr1 元素自定义
- 创建 223 的数组arr2 元素自定义
- 查看arr2的维度以及形状
- 将arr2转为1维
- 将arr1进行转置
- 生成 4*4 全为1的数组 arr3
- 生成 单位矩阵
代码如下:
import numpy as np
import random
#定义生成多维数组的函数
def make_arr(*args):
dim = len(args) #dim 为维度
n = 1
for i in range(dim):
n *= args[i]
#生成数值个数相同的一维array数组
arr = np.array([random.randint(0,100) for i in range(n)])
#转化为所需形状
arr = arr.reshape(args)
print(arr)
return arr
#定义生成单位矩阵的函数
def make_unit_matrix(n):
lst1 = [ 0 for i in range(n)]
lst2 = lst1[:] #连接的起始列表
#将n个长度为n的列表连接成新列表
for i in range(1,n):
lst3 = lst1[:]
lst3[i] = 1 #第i个列表的第i个元素赋值为1
lst2 += lst3
lst2[0] = 1
#将列表转换为(n,n)的矩阵
arr = np.array(lst2).reshape(n,n)
print(arr)
return arr
arr1 = make_arr(2,2)
#三种方法进行转置: arr1.T,arr1.transpose(),arr1.swapaxes(1,0)
print(arr1.T)
# print(arr1.transpose())
# print(arr1.swapaxes(1,0))
arr2 = make_arr(2,2,3)
print(f'arr2的维度是{arr2.ndim},形状是{arr2.shape}')
#三种方法将多维压缩为一维:arr2.reshape(n),arr2.flatten(),arr2.ravel()
print(arr2.reshape(12)) #n可以为任意负数也可以为数组中数值的总个数
# print(arr2.flatten())
# print(arr2.ravel())
arr3 = np.ones((4,4)) #生成shape形状的全为1的数组
print(arr3)
#调用自定义函数生成单位矩阵
arr4 = make_unit_matrix(4)
arr5 = np.empty((4,4)) #生成shape形状的初始化为空的数组
print(arr5)
arr6 = np.full((4,4),2) #生成shape形状全为n的数组
print(arr6)
arr7 = np.zeros((4,4)) #生成shape形状的全为0的数组
print(arr7)
arr7 = np.ones_like(arr2) #生成形状与arr2相同的全为1的数组
print(arr7)