import numpy as np
1.创建一个长度为10的一维全为0的ndarray对象,然后让第5个元素等于1
n = np.zeros(10,dtype=np.int32)
n[4] = 1
2.创建一个元素从10到49的ndarray对象
n = np.arrange(10,50)
3.将第2题的所有元素位置反转
n[::-1]
- 使用np.random.random创建一个10*10的ndarray对象,并打印出最大最小元素
n = np.random.random(size=(10,10))
display(n,np.max(n),np.min(n))
5.创建一个10*10的ndarray数组,且矩阵边界全为1,里面全为0
方法1
n = np.zeros((10,10),dtype=np,int16)
n[[0,-1]] = 1 # 第0行和最后1行为1
n[:,[0,-1]] = 1 # 第0列和最后一列为1
----
方法2
n = np.ones((10,10),dtype=np.int16)
n[1:-1,1:-1] = 0
6.创建一个每一行都是0到4的5*5矩阵
l = [0,1,2,3,4]
l*5
n = np.array(l*5).reshape((5,5))
7.创建一个范围在(0,1)之间的长度为12的等差数列
n = np.linspace(0,1,12)
8.创建一个长度为10的随机数组并排序
n = np.random.randint(0,10,10)
n.sort()
9.创建一个长度为10的随机数组并将最大值替换为0
n = np.random.randint(0,10,size=10)
//最大值可能有多个
max1 = np.max(n)
np.argwhere(n==max1) # 多个最大值对应的下标
# 变为一维
# 所有最大值对应的索引
max_indexs = np.argwhere(n==max1).reshape(-1)
# -1我们就不用管它几个数字 如果你知道是3你可以写3
n[max_indexs] = 0
10.给定一个4维矩阵,如何得到最后两维的和
n = np.random.randint(0,10,size=(2,3,4,5))
n.sum(axis=(2,3))
# 第一个维度是axis=0
# 第二个维度是axis=1
# 第三个维度是axis=2
# 第四个维度是axis=3
11.给定数组[1,2,3,4,5],如何得到在这个数组每个元素之间插入3个0后的新数组?
n = np.arrange(1,6)
n2 = np.zeros(17,dtype=np.int16)
n2[::4] = n
12.给定一个二维矩阵,如何交换其中两行的元素?
n = np.random.randint(0,10,size=(4,4))
display(n)
# 可以利用索引交换行
n2 = n[[1,0,2,3]]
display(n2)
13.创建一个100000长度的随机数组,使用两种方法对其求三次方,并比较所用时间
n = np.random.randint(0,10,size=100000)
%timeit np.power(n,3)
%timeit n**3
14.创建一个53随机矩阵和一个32随机矩阵,求矩阵积
n1 = np.random.randint(0,100,size=(5,3))
n2 = np.random.randint(0,100,size=(3,2))
np.dot(n1,n2)
15.矩阵的每一行的元素都减去该行的平均值
n = np.random.randint(0,10,size=(3,4))
display(n)
n2 = n.mean(axis=1).reshape(3,1)
n-n2
n = np.zeros((8,8),dtype=int)
n[::2,1::2]=1
n[1::2,::2]=1
n = np.random.randint(0,100,size=(5,5))
min1 = n.min()
max1 = n.max()
# 归一化: 0-1之间
(n-min1)/(max1-min1)