import numpy as np #导入numpy把他缩写成np
a=np.array([4,5,6])
print(type(a))
print(a.shape)
print(a[0])
这个结果是下面这些
(3,)
4
b=np.array([[4,5,6],[1,2,3]])
print(np.shape(b))
print(b[0][0],b[0][1],b[1][1])
得到以下结果:
a=np.zeros((3,3),dtype=int)
b=np.ones((4,5))
c=np.eye(4)
d=np.random.random(size=(3,2))
print('a=',a)
print('b=',b)
print('c=',c)
print('d=',d)
得到以下结果:
a=np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]])
print(a)
print(a[2][3],'\n',a[0][0])
得出以下结果:
a=np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]])
b=a[0:2,2:4]
print(b)
print(b[0][0])
得到以下结果:
a=np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]])
c=a[1:3,:]
print(c)
print(c[0][-1])
得到以下结果:
a=np.array([[1,2],[3,4],[5,6]])
print(a[[0,1,2],[0,1,0]])
得到以下结果:
a=np.array([[1,2,3],[4,5,6],[7,8,9],[10,11,12]])
b = np.array([0, 2, 0, 1])
print(a[np.arange(4), b])
'''
arange(n)从0到n-1数组
arange(a,b)从a到b-1数组
arange(a,b,c)从a开始以c为步长到b-1
'''
回顾了一下arange函数,有点忘了awa
得到以下结果:
a=np.array([[1,2,3],[4,5,6],[7,8,9],[10,11,12]])
b = np.array([0, 2, 0, 1])
a[np.arange(4), b] += 10
print(a[np.arange(4), b])
得到以下结果:
确实是每个元素都加10了哈
x = np.array([1, 2])
print(type(x))
得到以下结果:
x = np.array([1.0, 2.0])
print(type(x))
得到以下结果:
不是我用上面的图,这两个结果就是一样的QWQ
x = np.array([[1, 2], [3, 4]], dtype=np.float64)
y = np.array([[5, 6], [7, 8]], dtype=np.float64)
print(x+y)
print(np.add(x,y))
得到以下结果:
add就是+不会有人不知道吧?
x = np.array([[1, 2], [3, 4]], dtype=np.float64)
y = np.array([[5, 6], [7, 8]], dtype=np.float64)
print(x - y)
print(np.subtract(x, y))
得到以下结果:
subtract是-不会也有人不知道吧?
x = np.array([[1, 2], [3, 4]], dtype=np.float64)
y = np.array([[5, 6], [7, 8]], dtype=np.float64)
print(x*y)
print(np.multiply(x,y))
print(np.dot(x,y))
得到以下结果:
multiply和*是一样的,是把数组中对应的元素相乘,而dot是矩阵的乘法。
如果换成不是方阵的矩阵,比如下面两种情况:
x = np.array([[1,2,3], [3,4,5]], dtype=np.float64)
y = np.array([[5,6,7], [7,8,9]], dtype=np.float64)
print(x*y)
print(np.multiply(x,y))
print(np.dot(x,y))
x = np.array([[1,2,3], [3,4,5]], dtype=np.float64)
y = np.array([[5,6], [7,8],[9,10]], dtype=np.float64)
print(x*y)
print(np.multiply(x,y))
print(np.dot(x,y))
会得到以下结果:
把第二种情况的*和multiply删掉后得到下面结果:
会发现当两个矩阵行数和列数相同的时候,*和multiply是可以运行的,因为他们是对应的元素相乘,而dot是矩阵中的点乘,所以当第一个矩阵的列数与第二个矩阵的行数不同的时候是没有办法运行的,第二种情况就是点乘可以运行但是因为此时两个矩阵的行列数不同,所以*和multiply是不能运行的,总结一下就是*和multiply是一样的都只是单纯的对应位置的元素相乘,在想要对应改变矩阵中的元素时使用比较方便,而dot是要进行矩阵点乘运算的时候使用。
x = np.array([[1,2], [3,4]], dtype=np.float64)
y = np.array([[5,6], [7,8]], dtype=np.float64)
print(x/y)
print(np.divide(x,y))
得到以下结果:
divide和x/y一样都是对应位置元素相除。
x = np.array([[1,2], [3,4]], dtype=np.float64)
y = np.array([[5,6], [7,8]], dtype=np.float64)
print(np.sqrt(x))
得到以下结果:
x = np.array([[1,2], [3,4]], dtype=np.float64)
y = np.array([[5,6], [7,8]], dtype=np.float64)
print(x.dot(y))
print(np.dot(x,y))
得到以下结果:
可以看到,x.dot(y)和np.dot(x,y)是一样的
x = np.array([[1,2], [3,4]], dtype=np.float64)
y = np.array([[5,6], [7,8]], dtype=np.float64)
print(np.sum(x))
print(np.sum(x,axis =0))
print(np.sum(x,axis =1))
得到以下结果:
sum函数中,axis的取值有三种情况:1.None,2.整数, 3.整数元组,axis的取值不能大于数组或矩阵的维度,如果axis取None,即将数组/矩阵中的元素全部加起来,得到一个和。当axis为0时,是压缩行,即将每一列的元素相加,将矩阵压缩为一行,当axis为1时,是压缩列,即将每一行的元素相加,将矩阵压缩为一行(也可以更好一点理解为压缩为一列,但是以行的模式输出)
x = np.array([[1,2], [3,4]], dtype=np.float64)
y = np.array([[5,6], [7,8]], dtype=np.float64)
print(np.mean(x))
print(np.mean(x,axis =0))
print(np.mean(x,axis =1))
得到以下结果:
这个和sum是相似的axis默认为None时就是把矩阵中所有的数平均,axis=0和axis=1时分别压缩行和列
x = np.array([[1,2], [3,4]], dtype=np.float64)
y = np.array([[5,6], [7,8]], dtype=np.float64)
print(x.T)
得到以下结果:
这个没什么好说的就是矩阵的转置,学过线代的都会吧
x = np.array([[1,2], [3,4]], dtype=np.float64)
y = np.array([[5,6], [7,8]], dtype=np.float64)
print(np.exp(x))
得到以下结果:
注意不是元素的e次方,而是e的元素次方。
x = np.array([[1,2], [3,4]], dtype=np.float64)
y = np.array([[5,6], [7,8]], dtype=np.float64)
print(np.argmax(x))
print(np.argmax(x,axis =0))
print(np.argmax(x,axis =1))
得到以下结果:
emm,老师可能是题里面打错了吧,如果是print(np.argmax(x),axis =1)这样的就报错了qwq
还是跟上面的一样没有写axis的时候就是默认为None但是有一点不太一样就是argmax在axis=None的时候会将矩阵展开铺平成为一行,所以(1)显示的下标不是(1,1)而是3。
因为这个是最后一个题里面带axis的了,所以顺便在这里解释一下axis是什么意思,在二维数组中,axis=0时是沿纵轴进行操作,也就是列,axis=1时沿横轴进行操作,也就是行。但是这只是二维数组,那多维数组的时候怎么办呢?也就是axis=i时沿i轴进行操作。
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(0, 100, 0.1)
y=x*x
plt.plot(x,y)
plt.xlabel('x')
plt.ylabel('y')
plt.show()
得到以下结果:
这个也没啥好说的了
x = np.arange(0, 3 * np.pi, 0.1)
y1=np.sin(x)
y2=np.cos(x)
plt.plot(x,y1)
plt.plot(x,y2)
plt.xlabel('x')
plt.ylabel('y')
plt.show()
得到以下结果:
因为不是一次写完的,所以注释写的地方不太一样awa