import numpy as np
# # 核心:数组 数组里面只能存放列表!!!
# a = np.zeros((3,2))# 创建一个全是0数组
# # 表示 3个数列,每个数列2个数据
# # 表示 0 0
# # 0 0
# # 0 0
# print(a)
# print(a.shape)# 获取数组的规模
#
# # numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0)
# # 创建的数组 可以进入的类型
#
#
# a = np.ones((3,2))# 全是一的数组
# print(a)
# a = np.arange(3,7)# 类似range左边可取,右边不行
# print(a)
# b = np.linspace(3,6,2)
## 开头是3,结尾是6,最后的数字表示总共取多少个数字(包括开头和结尾)
# print(b)
array = np.array([[1, 2, 3],
[4, 5, 6]])
# 规格用(),具体数字用[],and具体数据要在里面加上一层!!
print(array)
print(array.ndim) # 知道他是多少维的东西!!
a = np.array([2, 23, 4], dtype=np.int0)
# type代表的是数据的存储的格式,后面的数字越大,那么他的大小越大,所以也就越精确
print(a)
a = np.arange(1,13).reshape(3,4)# reshape代表是多少航多少列
print('arange',a)
b = np.linspace(3,6,3).reshape(3,1)#3个数列,每个数列1个数据
# 开头是3,结尾是6,最后的数字表示总共取多少个数字(包括开头和结尾)
# 是平均分的
print('linspace',b)
# arrange 和 Linspace的区别最后的参数arrange是间隔,
# Linspace是取多少个数,但是要注意,这些数字是包括头和尾
import numpy as np
a = np.array([1,1,1])
b = np.array([2,2,2])
c = np.vstack((a,b))# 上下叠加,创造二维数列
d = np.hstack((a,b))# 左右叠加,合并成一个数列,h好
# 第一个括号代表这个函数,第二个括号代表进来的那两个要合并
print(c)
print(c.shape)
print(d)
# [1,1,1]
# 怎么变成[1]
# [1]
# [1]
# a.T 不行。。。
print(a[:,np.newaxis])
# 创建出一个新的维度
a = a[:,np.newaxis] #111变成 1 \n 1\n 1
b = b[:,np.newaxis]
print(np.hstack((a,b,b)))
c = np.concatenate((a,b),axis=0)# 0--上下 1---列表一排左右合并
print(c)
a = np.arange(1,13).reshape((3,4))# 记得加括号,因为3和4是一起的
print(a)
print(np.split(a,2,axis=1))
# 分成 2部分 列表内进行分割,就是左右嘛,上面有
# 左右的中间切开
a = np.arange(1,13).reshape((4,3))# 记得加括号,因为3和4是一起的
print(a)
# print(np.split(a,2,axis=0))# 上下分割
# 上下的中间切开
# 这种方法数据必须是可以平均分配的
# 和上面的split一样,但是v代表上下,,h代表左右,上面有写
# print(np.vsplit(a,2))
# print(np.hsplit(a,3))
# 下面这种就不大需要
# print(np.array_split(a,3,axis=0))
# 不平均分配
import numpy as np
# a = np.array([20,30,40,50])
# b = np.arange(4)# 0 1 2 3
# print(a,b)
#
# print('a+b:',a+b)
# print('a*2:',a*2)
# print('a的平方:',a**2)# easy,right?
# print('np.sin,就是求a里面每一个的sin值:',np.sin(a))
# # cos tan类似,但是记得加上 np....
# b = np.arange(4).reshape(2,2)
# print(b<2)# 返回一个列表,符合值<2就是true
a = np.arange(1,10).reshape(3,3)
b = np.arange(9,0,-1).reshape(3,3)
print(a,'\n',b)
# c_dot = np.dot(a,b)
# 等同于下面那个
# c_dot = a.dot(b)
# print(c_dot) 矩阵运算不过多赘叙
# sum,max,min这些也不过多赘叙
# 但是记得加上 np!!!!
print(np.sum(a,axis=0))# 每个列表的第n个
print(np.sum(a,axis=1))# 每个列表
print(np.max(a,axis=0))# 同理
print(np.argmin(b))
# 最小值的索引,只会返回一个数字,那个就是按着顺序数下去
print(np.mean(a))
# 当然有另一种形式,a.mean()
# 平均值!!
print(np.median(a))
# 中位数
print(np.cumsum(a))
# 前缀和!!!
print(np.diff(a))
# 后一个数-前一个数,重复n次
print(np.nonzero(a))
# 打印全部非0的数字的索引,但是索引的行列,是分开的!!
print(np.sort(b))
# 进行排序,但是是一个一个列表进行排序。。
print(np.transpose(a))
# 行变成列,列变成行
# 另一种形式:a.T
print(np.clip(a,3,6))
# 表示,全部小于3的数字变成3
# 大于6的全部变成6
# a是二维的,因为一维的就是列表。。
print(a[2])
# 只有一个的时候,表示的是哪一个列表
print(a[2][1])# 第3个列表的第二个数据
# print(a[2,1]) teh same
print(a[2,:])
# 第二行所有数,所以有什么用捏
# 我们可以去第一列的第一个
print(a[:,0])# bingo
print(a.flatten())# 将全部数据都放到了一行当中
for i in a:
print(i)# 可知for出来的是一个个列表
import numpy as np
a = np.arange(1,5)
print(a)
# 没什么精彩的,就是a = b ,改变b的时候,a也改变了
# 因为这只是赋值,b只是a的一个名牌而已
# b就是a
b = a
b[0] = 14# 因为是一维,直接想列表一样
print(a)
a = np.arange(1,5)
# 所以用到copy。。
b = a.copy()
b [0] =666
print(a)