最近在编辑关于Python的程序。 正好总结了数据库中使用的关于NumPy的句子。
百度百科: NumPy系统是Python开源的数值计算扩展。 该工具也可以用于表示矩阵,该矩阵比Python自己的“嵌套列表结构”(nested list structure )结构更有效地存储和处理大得多的矩阵(该结构是矩阵)。 据悉,NumPy相当于将Python变为免费的更强大的MatLab系统。
1 .读取文件
numpy.genfromtxt ) )用于导入txt文件,传递的参数按以下顺序排列:
需要导入的txt文件的位置。 在这里,文件与程序位于同一目录中
分割的标记
转换类型。 如果文件同时包含文本类型和数字类型,请首先将其转换为文本类型
用于显示帮助文档的帮助(numpy.genfromtxt ) :
不想看API时,可以启动程序,通过help查看指令的详细使用方法
导入编号
world _ alcohol=numpy.genfromtxt (world _ alcohol.txt ),分隔符=',',dtype=str ) )
打印(类型(世界醇) )
打印(世界醇) )是
打印(帮助(numpy.genfromtxt ) )
构建数组
numpy.array ()结构非阵列
传递给numpy.array ()的数组参数可以是一维、二维或三维的。 numpy将其改变为ndarray的结构。
vtor=numpy.array ([ 1,2,3,4 ]
矩阵=数值阵列([ 1,2,3 ],[ 4,5,6 ] ) )
传递的参数必须是相同的结构,而不是相同的结构转换。
vtor=numpy.array ([ 1,2,3,4 ]
数组([ 1,2,3,4 ]
均为int型
vector=numpy.array ([ 1,2,3,4.0 ]
数组([1.2 .3 .4.] ) )。
转换为浮点类型
vector=numpy.array ([ 1,2,'3',4]
数组(“1”、“2”、“3”、“4”),类型=“u21”
转换为字符类型
用. shape显示结构
可以了解array的结构,在debug时通过查看结构可以更好地了解程序的执行过程。
打印(矢量形状) )。
打印(矩阵.形状) )。
(四、) )。
(二、三) )。
使用dtype显示类型
vtor=numpy.array ([ 1,2,3,4 ]
向量类型
dype(int64 ) ) )。
ndim视图维
一维
vtor=numpy.array ([ 1,2,3,4 ]
vector.ndim
1
二维
矩阵=数值阵列([ 1,2,3 ],
4,5,6,
[ 7,8,9 ] )
矩阵. NDIM
2
size视图元素数
矩阵尺寸
9
3 .获取和计算
numpy可以使用切片检索数据
矩阵=数值阵列([ 1,2,3 ],
4,5,6,
[ 7,8,9 ] )
根据条件取得
numpy可以按顺序比较向量和元素是否相同
vector=numpy.array ([ 5,10,15,20 ]
矢量==10
阵列([假,真,假,假],类型=布尔
从返回值中获取元素
vector=numpy.array ([ 5,10,15,20 ]
equal _ to _ ten=(向量==10 )
print (等值到等值) )是
打印(向量机)。
假设假设
10
进行运算后获取
vector=numpy.array ([ 5,10,15,20 ]
equal _ to _ ten _和_ five=(向量==10 ) (向量==5)
类型转换
转换整体类型
vector=numpy.array ([ 5,10,15,20 ]
打印(矢量类型) )。
矢量=矢量a
stype(str)print(vector.dtype)
int64
<U21
求和
sum() 能够对 ndarray 进行各种求和操作,比如分别按行按列进行求和
matrix = numpy.array([[1,2,3],
[4,5,6],
[7,8,9]])
print(matrix.sum())
print(matrix.sum(1))
print(matrix.sum(0))
45
[61524]
[121518]
sum(1) 是 sum(axis=1)) 的缩写,1表示按照 x轴方向求和,0表示按照y轴方向求和
4. 常用函数
reshape
生成从 0-14 的 15 个数字,使用 reshape(3,5) 将其构造成一个三行五列的 array。
importnumpy asnp
arr = np.arange(15).reshape(3,5)
arr
array([[0,1,2,3,4],
[5,6,7,8,9],
[10,11,12,13,14]])
zeros
生成指定结构的默认为 0. 的 array
np.zeros((3,4))
array([[0.,0.,0.,0.],
[0.,0.,0.,0.],
[0.,0.,0.,0.]])
ones
生成一个三维的 array,通过 dtype 指定类型
np.ones((2,3,4),dtype=np.int32)
array([[[1,1,1,1],
[1,1,1,1],
[1,1,1,1]],
[[1,1,1,1],
[1,1,1,1],
[1,1,1,1]]])
range
指定范围和数值间的间隔生成 array,注意范围包左不包右
np.arange(0,10,2)
array([0,2,4,6,8])
random 随机数
生成指定结构的随机数,可以用于生成随机权重
np.random.random((2,3))
array([[0.86166627,0.37756207,0.94265883],
[0.9768257,0.96915312,0.33495431]])
5. ndarray 运算
元素之间依次相减相减
a = np.array([10,20,30,40])
b = np.array(4)
a - b
array([6,16,26,36])
乘方
a**2
array([100,400,900,1600])
开根号
np.sqrt(B)
array([[1.41421356,0.],
[1.73205081,2.]])
e 求方
np.exp(B)
array([[7.3890561,1.],
[20.08553692,54.59815003]])
向下取整
a = np.floor(10*np.random.random((2,2)))
a
array([[0.,0.],
[3.,6.]])
行列变换
a.T
array([[0.,3.],
[0.,6.]])
变换结构
a.resize(1,4)
a
array([[0.,0.,3.,6.]])
6. 矩阵运算
矩阵之间的运算
A = np.array([[1,1],
[0,1]])
B = np.array([[2,0],
[3,4]])
对应位置一次相乘
A*B
array([[2,0],
[0,4]])
矩阵乘法
print(A.dot(B))
print(np.dot(A,B))
[[54]
[34]]
横向相加
a = np.floor(10*np.random.random((2,2)))
b = np.floor(10*np.random.random((2,2)))
print(a)
print(b)
print(np.hstack((a,b)))
[[2.3.]
[9.3.]]
[[8.1.]
[0.0.]]
[[2.3.8.1.]
[9.3.0.0.]]
纵向相加
print(np.vstack((a,b)))
[[2.3.]
[9.3.]
[8.1.]
[0.0.]]
矩阵分割
#横向分割
print(np.hsplit(a,3))
#纵向风格
print(np.vsplit(a,3))
7. 复制的区别
地址复制
通过 b = a 复制 a 的值,b 与 a 指向同一地址,改变 b 同时也改变 a。
a = np.arange(12)
b = a
print(aisb)
print(a.shape)
print(b.shape)
b.shape = (3,4)
print(a.shape)
print(b.shape)
True
(12,)
(12,)
(3,4)
(3,4)
复制值
通过 a.view() 仅复制值,当对 c 值进行改变会改变 a 的对应的值,而改变 c 的 shape 不改变 a 的 shape
a = np.arange(12)
c = a.view()
print(cisa)
c.shape = 2,6
c[0,0] = 9999
print(a)
print(c)
False
[99991234567891011]
[[999912345]
[67891011]]
完整拷贝
a.copy() 进行的完整的拷贝,产生一份完全相同的独立的复制
a = np.arange(12)
c = a.copy()
print(cisa)
c.shape = 2,6
c[0,0] = 9999
print(a)
print(c)
False
[01234567891011]
[[999912345]
[67891011]]