Numpy
最基本的一些numpy操作:
import numpy as np
a =np.array([2,23,4], dtype = np.int64)
print(a)
#会打印出数列,且无逗号, dtype可以自己定义,也可以空
a =np.array([[2,23,4]
[2,23,1]], dtype = np.int64)
#可生成多行矩阵,需要注意格式
一些特殊矩阵的生成
a = np.zeros((3,4))
#生成3行4列的零值矩阵
#ones生成1值矩阵
#empty生成接近0值的矩阵
a = np.arange(10,20,2)
#10到20,差为2的等差数列
#最后一个为步长,可定义为负
#np.arange(4), 默认是0到3,0,1,2,3这四个数,差为1
a = np.arange(12).reshape((3,4))
#生成0-12,3行4列的矩阵,差值为1(默认)
#reshape的元素的个数要满足矩阵里的位置
a = np.linspace(1,10,20)
#生成,1-10这条线上(实心点),分成20段的数列,等差
#也可以reshape
当然,也可以对矩阵进行一些常见运算:
c = b **2
#2次方
c = a*sin(a)
#对a的每个值求sin
也可以有一些特殊的运算
print(b<3)
#返回b中每个元素小于3的布尔值,依然是同shape矩阵
c = np.dot(a,b)
#a*b 为俩矩阵,一一对应的位置相乘,非矩阵乘法的结果
#dot则为矩阵乘法的值
对于矩阵内部的数据处理
a = np.random.random((2,4))
#首先生成一个2,4形状的矩阵,且随机值在0,1之间
np.sum(),
np.max(),
np.min(a,axis = 0),
np.mean().
np.median(),
np.cumsum(),
np.diff()
#都是针对矩阵内进行的运算
#0对行,1对列,生成的结果也为矩阵(对应行/列)
#average不能用于矩阵
#cumsum返回的是同样项数的,逐次累加
#diff是俩个数之间的累进差值
在tensorflow中非常好用的操作:
np.argmin(),
np.armax()
#返回最大最小值的索引,对于tf用处较大
np.nonzero()
#返回非零的值, 的位置。 用行列俩个值来表示
矩阵的分割,合并,调换等操作
np.transpose
#行列进行调换
np.clip(a, a_min, a_max)
#限定矩阵里面的范围,比如把所有的值都限定在1,-1之间
print(A,[3])
#print出来A里面的第三个数(如果只有一行), 或者第三行(不止一行)
print(A,[1,1])
#print出来A里面第一行,第一列的数值
#注意,从零行零列开始数
#可以用冒号:代替所有的数, 1:2表示1到2的值
for column in np.transpose(A):
print (column)
#换言之,for循环默认是行
for item in A.flat:
print(item)
#flat的作用是把矩阵换成平的一行
A = ([1,1,1])
B = ([2,2,2])
C = np.vstack((A,B))
D = np.hstack((A,B))
#可以分别用上下或者左右的方式合并
np.split(A,2,axis =0)
#必须是相等的分割,0是横向,1是竖向
np.arrary_split(A,3,axis=0)
#可以做不相等的分割
np.vsplit/hsplit
#vertical/horizontal
##变量的传递
a = ([1,2,3])
a = b
b = c
#a, b, c 这三个在硬盘上是一个位置,用is语句的话会得到true
b = a.copy() #deep copy
#只copy指,而不关联起来