numpy数组基础知识

#回顾numpy的基础用法
#1...numpy的数组的属性
import numpy as np 

a=np.arange(20,dtype=np.float).reshape(4,5)
print a.ndim #数组轴的个数
print a.shape #数组在每个维度上的大小,返回值为一个整数元祖
print a.size #数组元素的总个数
print a.dtype  #数组元素的类型
print a.itemsize #数组中每个元素的字节大小
#2...numpy创建数组
b=([[1,2,3],
    [2,3,4],
    [4,5,6]])  #方法一:直接使用python的方法创建数组
c=np.array([1,2,3,4,5],dtype=np.complex)  #方法二:使用numpy的array等函数(其他函数如:arange,linspace,indice)创建数组
#注意array函数中指定数组值的部分只能有一个参数,该参数是由数值组成的列表
 #3...numpy通过其他函数创建数组
#注意:numpy中的zeros、ones、empty等函数的默认创建数组类型dtype都是float64
d=np.zeros((3,4))#创建一个全0的数组
print d
e=np.ones((2,3,4),dtype=np.int16)  #创建一个全1的数组
print e
f=np.empty((2,3)) #函数empty创建一个内容随机并且依赖于内存状态的数组
print f  

#关于numpy的数组的打印注意:当一个数组特别大时,numpy自动省略中间部分只打印角落
print np.arange(10000).reshape(100,100)
#3...numpy数组的基本运算
#注意numpy中数组的算术运算都是按元素的,矩阵乘法可以使用dot函数
A=np.array([10,20,30,40])
B=np.array([1,2,3,4])
print A-B,A*B,A**2,10*np.sin(A),A<35,np.dot(A,B)
#有些操作符+=  -+  *=用来更改已存在数组而不创建一个新数组
del  a
a=np.random.random((2,3))
print a
print a.sum(),a.min(),a.max()

#当在函数中指定axis参数时,可以把上述这些元算应用到数组的指定轴上
print a.sum(axis=0)
print a.cumsum(axis=1)  #这个函数是按照axis的方向进行前面值连续的加和
#NumPy提供常见的数学函数如sin,cos,sqrt,add和exp等。在NumPy中,这些叫作“通用函数”(ufunc)。
#在NumPy里这些函数作用按数组的元素运算,产生一个数组作为输出,此处不再演示。

#4...numpy中数组的索引、切片和迭代
#在numpy中,一维数组可以被索引、切片和迭代,就像列表和其他python序列
#!!!注意:索引时一定用的是[]而不是()
#一维数组的索引
C=np.arange(10)*3
print C[: : -1]#注意中间不带逗号
C[:6:2]=1000
print C
#多维数组的索引
#多维数组可以每个轴有一个索引,这些索引由一个逗号分割的元组给出
D=np.array([[0,1,2,3],
            [10,11,12,13],
            [21,22,23,24],
            [31,32,33,34]])
print D[1:2,1]
#当提供的索引少于轴数时,缺失的索引被认为是整个切片
print D[-1],D[-1,...]  #这两种写法是一样的
#注意当索引号为-1时,表示最后一行;由于缺失axis=1时的索引,所以会默认显示整个axis=1的切片
#当对每个数组中的元素进行运算时,可以使用flat属性,该属性是数组元素的一个迭代器
for element in D.flat:
    print element


#5...数组的形状操作
#更改数组形状
E=np.floor(10*np.random.random((3,4)))
print E
print E.ravel() #函数ravel用来将数组展平,即变成一维
print E.reshape(6,2)
print E
print E.transpose()#函数transpose用来将数组转置
print E.resize((2,6))#注意:reshape改变参数的形状并返回它,而resize函数则改变数组自身,但是返回值为空
print E
#如果在改变形状操作中一个维度被给做-1,它会自动计算另一个维度

#组合不同的数组,即将数组沿不同轴堆叠在一起

F = np.floor(10*np.random.random((2,2)))
G = np.floor(10*np.random.random((2,2)))
print F,G
print np.vstack((F,G))  #垂直组合
print np.hstack((F,G))  #水平组合
#此外,函数column_stack以列将一维数组组合成二维数组,它等同于vstack对一维数组
#raw_stack则是将一维数组以行组合成二维数组
#注意:对于比二维高的高维数组,hstack沿着第二个轴组合,vstack沿着第一个轴组合,concatenate允许可选参数给出组合时沿着的轴。
#在复杂情况下,r_[]和c_[]对创建沿着一个方向组合的数很有用,它们允许范围符号(“:”):r_[1:4,0,4] 结果为array([1, 2, 3, 0, 4]) 
#当使用数组作为参数时,r_和c_的默认行为和vstack和hstack很像,但是允许可选的参数给出组合所沿着的轴的代号。

#数组分割
#使用hsplit你能将数组沿着它的水平轴分割,或者指定返回相同形状数组的个数,或者指定在哪些列后发生分割
#vsplit沿着纵向的轴分割,array split允许指定沿哪个轴分割。
H=np.floor(10*np.random.random((2,12)))
print H
print np.hsplit(H,3)  #分割数组
print np.vsplit(H,2)


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值