numpy切片和索引
s = np.arange(10) # [0 1 2 3 4 5 6 7 8 9]
print(s[1:8]) # [1 2 3 4 5 6 7]
print(s[1:]) # [1 2 3 4 5 6 7 8 9]
print(s[:-1]) # [0 1 2 3 4 5 6 7 8]
print(s[1:8:2]) # [1 3 5 7]
a = np.array([[1,2,3], [4,5,6],[7,8,9]])
b = a[1:3, 1:3]
c = a[1:3,[1,2]]
d = a[...,1:]
numpy之间的运算(加减乘除)
形状一样的时候
a = np.array([1,2,3,4])
b = np.array([10,20,30,40])
c = a * b # [ 10 40 90 160]
形状不一样的时候
a = np.array([[ 0, 0, 0],
[10,10,10],
[20,20,20],
[30,30,30]])
b = np.array([1,2,3])
print(a + b) # [[ 1 2 3]
# [11 12 13]
# [21 22 23]
# [31 32 33]]
修改形状
a = np.arange(8)
b = a.reshape(4,2) #重置形状
print(b)
for row in b: # 取出每一行
print(row)
for element in b.flat: # 取出每一个元素
print(element)
print (b.ravel(order='F')) # F是按列展开,默认按行展开
print(np.sin(b)) #每个元素做sin并返回同等大小数组
矩阵属性
print(b.T) # 简单的转置
print(np.matlib.zeros((2,3))) #zeros全0 ones 全1
线性代数常用函数
a = np.array([[1,2],[3,4]])
b = np.array([[11,12],[13,14]])
print(np.dot(a,b)) #矩阵相乘 vdot是点积
#[[37 40]
# [85 92]]
print(a*b) # 每个元素对应相乘
#[[11 24]
# [39 56]]