处理数组形状——叠加与拆分

叠加数组形状
1.reshape(number,row,column)函数和b.shape
将数组重组为number个,行为row,列为column的数组。

import numpy as np
a= np.arange(20).reshape(2,2,5)
print(a)
b = a[0]
print(b)

[[[ 0  1  2  3  4]
  [ 5  6  7  8  9]]

 [[10 11 12 13 14]
  [15 16 17 18 19]]]
[[0 1 2 3 4]
 [5 6 7 8 9]]

b.shape = (row,column)

b = np.arange(24).reshape(2,3,4)
b.shape=(6,4)
print(b)

[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]
 [12 13 14 15]
 [16 17 18 19]
 [20 21 22 23]]

2.降维ravel()函数和flatten()函数
将多维数组变成一维数组。flatten()返回的是真实的数组,需要重新分配新的内存空间;而ravel()函数返回的只是数组的视图。

import numpy as np
b = np.arange(24).reshape(2,3,4)
print(b.ravel())
print(b.flatten())

[ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23]
[ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23]

3.转置transpose()和a.T

b = np.arange(24).reshape(2,3,4)
b.transpose()
b.T
array([[[ 0, 12],
        [ 4, 16],
        [ 8, 20]],

       [[ 1, 13],
        [ 5, 17],
        [ 9, 21]],

       [[ 2, 14],
        [ 6, 18],
        [10, 22]],

       [[ 3, 15],
        [ 7, 19],
        [11, 23]]])

4.堆叠数组vstack()、dstack()、hstack()、column_stack、row_stack()和concatenate()
hstack((a,b)):水平叠加,行方向的叠加,叠加对象为数组a和数组b。

a = np.arange(9).reshape(3,3)
b = 2*a
np.hstack((a,b))
array([[ 0,  1,  2,  0,  2,  4],
       [ 3,  4,  5,  6,  8, 10],
       [ 6,  7,  8, 12, 14, 16]])

np.concatenate()函数实现水平叠加,axis=0是沿着行的垂直方向向下,axis=1是沿着列的水平方向延伸。

a = np.arange(9).reshape(3,3)
b = 2*a
np.concatenate((a,b), axis=1)
array([[ 0,  1,  2,  0,  2,  4],
       [ 3,  4,  5,  6,  8, 10],
       [ 6,  7,  8, 12, 14, 16]])

vstack((a,b))函数垂直叠加

a = np.arange(9).reshape(3,3)
b = 2*a
np.vstack((a,b))
array([[ 0,  1,  2],
       [ 3,  4,  5],
       [ 6,  7,  8],
       [ 0,  2,  4],
       [ 6,  8, 10],
       [12, 14, 16]])

拆分数组:hsplit(), vsplit(), dsplit(), split()
hsplit(a, number)函数:a数组分为number列

a = np.array([[0, 1, 2],
            [3, 3, 5],
           [4, 6, 7]
])
print(np.hsplit(a, 3))
print(np.split(a, 3, axis=1))
[array([[0],
       [3],
       [4]]), array([[1],
       [3],
       [6]]), array([[2],
       [5],
       [7]])]

vsplit(a, number):a数组分为number行

import numpy as np

a = np.array([[0, 1, 2],
            [3, 3, 5],
           [4, 6, 7]
])
print(np.vsplit(a, 3))
print(np.split(a, 3, axis=0))
[array([[0, 1, 2]]), array([[3, 3, 5]]), array([[4, 6, 7]])]

数组的转换:.tolist()
将数组转换为列表。

import numpy as np

a = np.array([[0, 1, 2],
            [3, 3, 5],
           [4, 6, 7]
])
print(a.tolist())

[[0, 1, 2], [3, 3, 5], [4, 6, 7]]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值