import numpy as np
c = np.arange(1,13).reshape(6,2)
"""
#垂直拆分:numpy.vsplit(数组,份数)->(数组片段)
c = np.arange(1,13).reshape(6,2)
print(np.vsplit(c,3))
"""
#水平拆分:numpy.hsplit(数组,份数)->(数组片段)
"""
d =c.T
print(np.hsplit(d, 3))
"""
#numpy.dsplit(数组,份数)->(数组片段)
"""
a = np.array((1,2,3))
b = np.array((2,3,4))
e = np.dstack((a,b))
print(np.dsplit(e,2))
"""
#numpy基本加减和取行操作
"""
a = np.array([1,1,1,1])
b = np.array([[1],[1],[1],[1]])
print(a+b)
print("")
W = np.array([[1,1,1],[2,2,2]])
print(W[:,1])
print("")
print(W[1])
print("")
W[:,1] = np.array([5,5])
print(W)
"""
#矩阵删除、插入、尾部添加操作(delete,insert,append)
"""
matrix = [
[1,2,3,4],
[5,6,7,8],
[9,10,11,12]
]
p1 = np.delete(matrix, 1, 0) # 第0维度(行)第1行被删除(初始行为0行)
print(">>>>p1>>>>\n",p1)
p2 = np.delete(matrix, 1, 1) # 第1维度(列)第1行被删除
print(">>>>p2>>>>\n",p2)
p3 = np.delete(matrix, 1) # 拉平后删除第1个元素(初始为第0个)
print(">>>>p3>>>>\n",p3)
p4 = np.delete(matrix, [0,1], 1) # 第1维度(列)第0、1行被删除
print(">>>>p3>>>>\n",p4)
"""
#insert()函数
"""
matrix = [
[1,2,3,4],
[5,6,7,8],
[9,10,11,12]
]
q1 = np.insert(matrix, 1, [1,1,1,1], 0) # 第0维度(行)第1行添加[1,1,1,1]
print(">>>>q1>>>>\n",q1)
"""
#append()函shu
"""
matrix = [
[1,2,3,4],
[5,6,7,8],
[9,10,11,12]
]
m1 = np.append(matrix,[[1,1,1,1]])
print(m1)
"""
#np.random.choice(a, size, replace, p)
"""
a1 = np.random.choice(7,5) # 从0~7中随机选择5个数组成一维数组
print(a1)
a2 = np.random.choice([0,1,2,3,4,5,6],5) # 从给定list中随机选择5个数组成一维数组
print(a2)
a3 = np.random.choice(np.array([0,1,2,3,4,5,6]),5) # 将list换成array数组依然可以运行,效果一致
print(a3)
a4 = np.random.choice([0,1,2,3,4,5,6],5,replace=False) # 上述均有重复,将replace设置为False,即可按要求没有重复的选取
"""
#np.argmax(a, axis=None, out=None)
"""
a = np.array([[1,1,1],[2,2,2],[0,3,6]])
print(a)
"""
#星号(*)的作用
"""
y1 = np.linspace(-10.0,10.0) # 默认生成50个数据
print(y1)
"""
#拉平操作 ravel()和faltten()及reshape(1,-1)的区别联系(补充[None,:]操作)
"""
x = np.array([[1,2,3],[4,5,6],[1,2,3]])
print(x.flatten())
"""
#np.prod() 计算元素乘积
"""
x = np.array([[1,2,3],[2,3,4]])
print(np.prod(x))
"""
#把矩阵大于或小于N的元素置M的技巧
"""
x = np.array([[1,2,3],[-3,2,4],[5,-2,9]])
y1 = np.maximum(0,x) # 把小于0的元素置0,比改变x的值
print(y1)
x1 = x.copy()
x1[x1 < 0] = 0 # 把小于0的元素置0,改变x1的值\
print(x1)
"""
#numpy中的矩阵copy问题
"""
x = np.array([[1,2,3],[-3,2,4],[5,-2,9]])
x1 = x.copy() # copy(),开辟新地址
x1[x1 > 0] = 0
print(x1)
"""
#np.zeros_like()构造全零矩阵,无需指定大小
"""
x = np.array([[1,2,3],[4,5,6]])
# 生成一个和x大小相同的全零矩阵
print(np.zeros_like(x))
"""
#random.rand和random.rand和random.randint区别
"""
n = np.random.rand(3,4)
print(n)
"""
#np.random.randn() 生成正太分布矩阵
"""
x = np.random.randn(2,3)
print(x)
"""
#np.randm.randint() 生成离散均匀分布的整数值组成的矩阵
z = np.random.randint(2,9,(2,3))
print(z)
#python 断言 assert
x = "You are right"
print(type(x))
#np.pad()函数进行padding操作
A = np.arange(95,99).reshape(2,2)
print(A)
#np.newaxis 在特定位置增加一个维度
c = np.array([1,2,5,4])
print(c[:,np.newaxis])
#python 广播机制
a = np.array([2,2,3,4,5,5,6,7])
s = slice(0,7,2)
print(s)