numpy学习笔记(三)

numpy学习笔记(三)

对于一个二维矩阵

a = array([[ 1,  2,  3,  4],
       [ 5,  6,  7,  8],
       [ 9, 10, 11, 12]])

#如果使用以为的索引会出现这样的结果 
a[1]
Out[4]: array([5, 6, 7, 8])
    
#如果我们想单独跳出一个数字,则需要讲哪一行哪一列表示出来
a[1][2]  #或者a[1,2]
Out[5]: 7
#需要索引哪一列的数字时我们使用
a[:,0]
Out[7]: array([1, 5, 9])
#索引某一段的数字
a[0:2,0]
Out[10]: array([1, 5])#索引第一列第1第2个数字
    

我们可以通过FOR循环将数组编历出来

for cow in A:
print(cow)

通过迭代将每一个项目迭代出来

for item in a.flat: #将矩阵通过.flat来转变为一个只有一行的序列
 print(item)

矩阵上下合并:

a = array([0, 1, 2, 3, 4])
b = array([5, 6, 7, 8, 9])
np.vstack((a,b))    #vertical stack  垂直堆叠  A在上B在下
Out:
array([[0, 1, 2, 3, 4],
       [5, 6, 7, 8, 9]])

矩阵左右合并:

np.hstack((a,b))
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

改变矩阵的形状,横向变竖向:

#普通的横向数列
a = array([0, 1, 2, 3, 4])
#增加横向维度
a[np.newaxis,:]
Out[9]: array([[0, 1, 2, 3, 4]])
#增加列向维度
a = a[:,np.newaxis]
Out[10]: 
array([[0],
       [1],
       [2],
       [3],
       [4]])
#将多维数组转换成一整行
a.flatten()

使数列变为纵向并合并:

a = a[:,np.newaxis]
b = b[:,np.newaxis] 
c = np.hstack((a,b))

c
Out[22]: 
array([[0, 5],
       [1, 6],
       [2, 7],
       [3, 8],
       [4, 9]])

简单的等分分割

#定义一个3行4列的数组
a = array([[ 1,  2,  3,  4],
       [ 5,  6,  7,  8],
       [ 9, 10, 11, 12]])
#纵向分割
np.split(a,2,axis = 1)  #纵向分割分成两个
[array([[ 1,  2],
       [ 5,  6],
       [ 9, 10]]), array([[ 3,  4],
       [ 7,  8],
       [11, 12]])]
np.hsplit(a,2)#这样也可以实现纵向分割
#横向分割成三块
np.split(a,3,axis=0)
Out: [array([[1, 2, 3, 4]]), array([[5, 6, 7, 8]]), array([[ 9, 10, 11, 12]])]
np.vsplit(a,2)#与hsplit同理,不过是横向

但是这种分割方法不能满足不等的分割

#我们可以通过np.array_split函数来实现不等分的分割

np.array_split(a,2,axis=1)
Out[10]: 
[array([[ 1,  2],
        [ 5,  6],
        [ 9, 10]]), array([[ 3,  4],
        [ 7,  8],
        [11, 12]])]
#通过这样的分割,第一块被分割的区域会比后面的偏大

Array之间的赋值

#普通的array之间的赋值
#a = b
#b = d
#那么这三个array都会相等
#我们可以通过b = a.copy()来使a 与b 的值不同步  deep copy
A= array([1, 2, 3])
B = A
B = array([1, 2, 3])
b = A.copy()
A[1] = 4


B = array([1, 4, 3])
b = array([1, 2, 3])
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值