1、创建一个长度为10的一维全为0的ndarray对象,然后让第5个元素等于1
import numpy as np
np.__version__
nd= np.array([0,0,0,0.0,0,0,0,0,0])
nd
nd[4] = 5
nd
2、创建一个元素为从10到49的ndarray对象
nd2=np.arange(10,49,5)
nd2
3、将第2题的所有元素位置反转
nd3=nd2[::-1]
nd3
4、使用np.random.random创建一个10*10的ndarray对象,并打印出最大最小元素
nd4=np.random.random((10,10)) # 生成0-1之间的浮点数
nd4
Zmin, Zmax = nd4.min(), nd4.max()
Zmin, Zmax
5、创建一个10*10的ndarray对象,且矩阵边界全为1,里面全为0
nd5 = np.ones((10,10))
nd5[1:-1,1:-1] = 0
nd5
6、创建一个每一行都是从0到4的5*5矩阵
nd6=np.arange(0,25,1)
nd6.resize((5,5))
nd61=np.arange(0,5,1)
nd6[0:5]=nd61
nd6
7、创建一个范围在(0,1)之间的长度为12的等差数列
nd7=np.linspace(0,1,12)
nd7
8、创建一个长度为10的随机数组并排序
nd8=np.random.random(10)
nd8.sort()
nd8
9、创建一个长度为10的随机数组并将最大值替换为0
nd9=np.random.random(10)
nd9[nd9.argmax()]=0
nd9
10、如何根据第3列来对一个5*5矩阵排序?
nd10=np.random.randint(0,20,size=(5,5))
nd10
sort_ind = np.argsort(nd10[:,3]) # 排序并且返回排序以后的下标序列
sort_ind
nd10[sort_ind]
11、给定一个4维矩阵,如何得到最后两维的和?
nd11=np.random.randint(0,10,size=(2,3,2,2))
nd11
nd11.sum(axis=-1)
nd11.sum(axis=-2)
nd11.sum(axis=(-1,-2))
12、给定数组[1, 2, 3, 4, 5],如何得到在这个数组的每个元素之间插入3个0后的新数组?
nd12=[1,2,3,4,5]
nd12
nd12_v=np.vstack(nd12)
nd12_v
nd12_z=np.zeros((5,3),dtype="int32")
nd12_z
np.concatenate([nd12_v,nd12_z],axis=1)
13、给定一个二维矩阵,如何交换其中两行的元素?
nd13=np.random.randint(0,20,size=(3,4))
nd13
nd13[[0,2,1]]
14、创建一个100000长度的随机数组,使用两种方法对其求三次方,并比较所用时间
nd14=np.random.randint(0,100000,5)
nd14
%timeit np.power(nd14, 3)
nd14_2=np.dot(nd14,nd14)
%timeit np.dot(nd14_2,nd14)
15、创建一个53随机矩阵和一个32随机矩阵,求矩阵积
nd15_1=np.random.randint(0,10,size=(5,3))
nd15_1
nd15_2=np.random.randint(0,10,size=(3,2))
nd15_2
np.dot(nd15_1,nd15_2)
16、矩阵的每一行的元素都减去该行的平均值
nd16=np.random.randint(0,10,size=(3,2))
nd16
nd16_1=np.mean(nd16,axis=1)
nd16_2=np.vstack(nd16_1)
nd16_2
nd16-nd16_2
17、打印出以下函数(要求使用np.zeros创建8*8的矩阵): [[0 1 0 1 0 1 0 1] [1 0 1 0 1 0 1 0] [0 1 0 1 0 1 0 1] [1 0 1 0 1 0 1 0] [0 1 0 1 0 1 0 1] [1 0 1 0 1 0 1 0] [0 1 0 1 0 1 0 1] [1 0 1 0 1 0 1 0]]
nd17=np.zeros((8,8),dtype="int32")
nd17
nd17[1::2,::2] = 1
nd17[::2,1::2] = 1
nd17
18、正则化一个5*5随机矩阵 正则的概念:假设a是矩阵中的一个元素,max/min分别是矩阵元素的最大最小值,则正则化后a = (a - min)/(max - min)
nd18 = np.random.random((5,5))
max, min =nd18.max(),nd18.min()
nd18 = (nd18 - min)/(max - min)
nd18
19、将一个一维数组转化为二进制表示矩阵。例如 [1,2,3] 转化为 [[0,0,1], [0,1,0], [0,1,1]]
1 and 0
1 or 0
1 & 2
# 60 = 1*2^5 + 1*2^4 + 1*2^3 +0*2^2+0*2^1+ 1*2^0
# 111001 & 2^3
#2 = 010
# 3 = 011
# 011
# 010
1 & 2**0
1 & 2**1
1 & 2**2
3 & 2**0
3 & 2**1
3 & 2**2
I = np.array([1,2,3])
I
A = I.reshape((-1,1))
A
B = 2**np.arange(3)
B
M = A & B
M
M != 0
M[M!=0] = 1
M
M[:,::-1]
20、实现冒泡排序法
nd20=[1,3,4,2,78,5,0,8]
for i in range(len(nd20) - 1):
for j in range(len(nd20)- 1 - i):
if nd20[j] > nd20[j+1]:
nd20[j],nd20[j+1] = nd20[j+1],nd20[j]
nd20