python numpy模块练习

  • numpy实现正态分布
  • numpy用于图像灰度处理
  • 创建一个长度为10的一维全为0的ndarray对象,然后让第5个元素等于1;
  • 创建一个元素为从10到49的ndarray对象
  • 将上题的所有元素位置反转;
  • 使用np.random.random创建一个10*10的ndarray对象,并打印出最大最小元素;
  • 创建一个10*10的ndarray对象,且矩阵边界全为1,里面全为0;
  • 创建一个每一行都是从0到4的5*5矩阵;
  • 创建一个范围在(0,1)之间的长度为12的等差数列;
  • 创建一个长度为10的随机数组并排序;
  • 创建一个长度为10的随机数组并将最大值替换为0;
  • 产生1-100之间的随机整数,并根据第3列来对一个5*5矩阵排序?
  • 给定数组[1, 2, 3, 4, 5],如何得到在这个数组的每个元素之间插入3个0后的新数组?
  • 给定一个二维矩阵,如何交换其中两行的元素?
  • 创建一个53随机矩阵和一个32随机矩阵,求矩阵积
  • 矩阵的每一行的元素都减去该行的平均值;
  • 正则化一个5*5随机矩阵
  • 16、正则化一个10*10随机矩阵:对每一列单独进行;

#正则的概念:假设a是矩阵中的一个元素,max/min分别是矩阵元素的最大最小值,则正则化后a = (a - min)/(max - min)

代码

import numpy as np
import matplotlib.pyplot as plt
#(1)numpy实现正态分布
a=np.random.randn() #无参标准正态分布
b=np.random.randn(2,3)  #生成2*3的二维数组
print(a)
print(b)

#(2)numpy用于图像灰度处理
a=plt.imread("flower.jpg")
plt.imshow(a)
plt.imsave("flower1.jpg",a)
print(a.shape)
# b=np.array([0.299,0.587,0.114])
# x=np.dot(a,b)
# plt.imshow(x,cmap="gray")
x=np.max(a,axis=2)
plt.imshow(x,cmap="gray")
x=np.min(a,axis=2)
plt.imshow(x,cmap="gray")
x=np.mean(a,axis=2)
plt.imshow(x,cmap="gray")

#(3)练习题
#1、1、创建一个长度为10的一维全为0的ndarray对象,然后让第5个元素等于1;
a=np.zeros(10,dtype=int)
a[4]=1
print(a)
#2、创建一个元素为从10到49的ndarray对象;
a=np.arange(10,50)
print(a)

#3、将第2题的所有元素位置反转;
b=a[::-1]
print(b)

#4、使用np.random.random创建一个10*10的ndarray对象,并打印出最大最小元素;
a=np.random.random((10,10))
amin,amax=a.min(),a.max()
print(a,"\n",amin,amax)

#5、创建一个10*10的ndarray对象,且矩阵边界全为1,里面全为0;
a=np.zeros(shape=(10,10),dtype=np.int8)
a[[0,9]]=1 #行变成1
a[:,[0,9]]=1
print(a)

#6、创建一个每一行都是从0到4的5*5矩阵;
a=[0,1,2,3,4]
a=np.array(a*5).reshape(5,5)
print(a)
a=np.arange(0,25).reshape(5,5)
a[0:5]=a[[0],:]#a[0:5]=a[0]
print(a)
#7、创建一个范围在(0,1)之间的长度为12的等差数列;
a=np.linspace(0,1,12)
print(a)

#8、创建一个长度为10的随机数组并排序;
np.random.seed(2) #随机种子
a=np.random.randint(0,15,size=12)
b=a.argsort() #返回对数组进行升序排序之后的数组元素在原数组中的索引
a.sort()
print(a)
print(b)

#9、创建一个长度为10的随机数组并将最大值替换为0;
a=np.random.randint(0,10,size=10)
print(a)
index_max=a.argmax() #返回根据指定axis计算最大值的索引
all_index_max=np.argwhere(a==a[index_max]).reshape(-1) #放回所有最大值的索引
a[all_index_max]=0
print(index_max)
print(all_index_max)
print(a)

#10、产生1-100之间的随机整数,并根据第3列来对一个5*5矩阵排序?
a=np.random.randint(0,100,size=(5,5))
print(a)
b=a[:,2]
index_max=b.argsort()
print(index_max)
a=a[index_max]
print(a)

#11、给定数组[1, 2, 3, 4, 5],如何得到在这个数组的每个元素之间插入3个0后的新数组?
a=np.arange(1,6)
print(a)
b=np.zeros(shape=17,dtype=int)
print(b)
b[::4]=a
print(b)

a=np.array([1,2,3,4,5]).reshape(5,1)
print(a)
b=np.zeros((5,3))
c=np.concatenate([a,b],axis=1)#c=np.hstack((a,b))
print(c.reshape(-1))

#12、给定一个二维矩阵,如何交换其中两行的元素?
a=np.random.randint(0,100,size=(3,3))
print(a)
a=a[[2,1,0]]#交换第一行和第三行
print(a)

#13、创建一个5*3随机矩阵和一个3*2随机矩阵,求矩阵积
a=np.random.randint(0,100,size=(5,3))
b=np.random.randint(0,100,size=(3,2))
c=np.dot(a,b)
print(c)

#14、矩阵的每一行的元素都减去该行的平均值;
a=np.random.randint(0,100,size=(3,3))
b=a.mean(axis=1).reshape(3,1) #对行求均值
c=a-b
print(c)

#15、正则化一个5*5随机矩阵
#正则的概念:假设a是矩阵中的一个元素,max/min分别是矩阵元素的最大最小值,则正则化后a = (a - min)/(max - min)
a=np.random.randint(0,100,size=(5,5))
amin=a.min()
amax=a.max()
print(a)
c=(a-amin)/(amax-amin)
print(c)

#16、正则化一个10*10随机矩阵:对每一列单独进行;
#正则的概念:假设a是矩阵中的一个元素,max/min分别是矩阵元素的最大最小值,则正则化后a = (a - min)/(max - min)

a=np.random.randint(0,100,size=(10,10))
amin=a.min()
amax=a.max()
print(a)
for i in range(0,10):
    a[:,[i]]=(a[:,[i]]-amin)/(amax-amin)
print(a)

猜你喜欢

转载自blog.csdn.net/weixin_44659084/article/details/115447580