Numpy 多维数组变为常量、增加维度、元素复制、按块复制、横轴竖轴合并数组、连接数组

1. flatten

NumPyflatten 函数也有改变 shape 的能力,它将高维数组变为向量。但是,它会发生数组复制行为。

In [57]: m = np.random.randint(1,10,(2,3))

In [58]: m
Out[58]: 
array([[2, 1, 6],
       [4, 2, 4]])

In [59]: n = m.flatten()

In [60]: n
Out[60]: array([2, 1, 6, 4, 2, 4])

In [61]: 

n[0] 元素被改变后,m 的元素没有发生变化。

In [61]: n[0] = 100

In [62]: n
Out[62]: array([100,   1,   6,   4,   2,   4])

In [63]: m
Out[63]: 
array([[2, 1, 6],
       [4, 2, 4]])

In [64]: 

2. newaxis

使用 newaxis 增加一个维度,维度的索引只有 0

In [64]: m = np.arange(10)

In [65]: m
Out[65]: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

In [69]: n = m[:, np.newaxis]

In [70]: n
Out[70]: 
array([[0],
       [1],
       [2],
       [3],
       [4],
       [5],
       [6],
       [7],
       [8],
       [9]])

In [71]: 

3. repeat

repeat 操作,实现某一维上的元素复制操作。在维度 0 上复制元素 2 次:

In [72]: a = np.array([[1,2], [3,4]])

In [73]: a
Out[73]: 
array([[1, 2],
       [3, 4]])

In [74]: np.repeat(a,2,axis=0)
Out[74]: 
array([[1, 2],
       [1, 2],
       [3, 4],
       [3, 4]])

In [75]: 

在维度 1 上复制元素 2 次:

In [75]: np.repeat(a,2,axis=1)
Out[75]: 
array([[1, 1, 2, 2],
       [3, 3, 4, 4]])

In [76]: 

4. tile

tile 实现按块复制元素:

In [76]: a 
Out[76]: 
array([[1, 2],
       [3, 4]])

In [77]: np.tile(a, 3)
Out[77]: 
array([[1, 2, 1, 2, 1, 2],
       [3, 4, 3, 4, 3, 4]])

In [78]: np.tile(a, (2, 3))
Out[78]: 
array([[1, 2, 1, 2, 1, 2],
       [3, 4, 3, 4, 3, 4],
       [1, 2, 1, 2, 1, 2],
       [3, 4, 3, 4, 3, 4]])

In [79]: a
Out[79]: 
array([[1, 2],
       [3, 4]])

In [80]: 

5. vstack

vertical stack,沿竖直方向合并多个数组:

In [80]: a = np.array([[1,2], [3,4]])

In [81]: a
Out[81]: 
array([[1, 2],
       [3, 4]])

In [82]: b = np.array([[-1, -2]])

In [83]: b
Out[83]: array([[-1, -2]])

In [84]: c = np.vstack((a,b)) # 参数为元组

In [85]: c
Out[85]: 
array([[ 1,  2],
       [ 3,  4],
       [-1, -2]])

In [86]: 

6. hstack

hstack 沿水平方向合并多个数组。值得注意,不管是 vstack,还是 hstack,沿着合并方向的维度,其元素的长度要一致。

In [86]: a = np.array([[1,2],[3,4]])

In [87]: a
Out[87]: 
array([[1, 2],
       [3, 4]])

In [88]: b = np.array([[5,6,7],[8,9,10]])

In [89]: b
Out[89]: 
array([[ 5,  6,  7],
       [ 8,  9, 10]])

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

In [91]: c
Out[91]: 
array([[ 1,  2,  5,  6,  7],
       [ 3,  4,  8,  9, 10]])

In [92]: 

7. concatenate

concatenate 指定在哪个维度上合并数组。

In [92]: a = np.array([[1,2],[3,4]])

In [93]: a
Out[93]: 
array([[1, 2],
       [3, 4]])

In [94]: b = np.array([[-1,-2]])

In [95]: b
Out[95]: array([[-1, -2]])

In [97]: np.concatenate((a,b),axis=0)	# 效果等于 vstack
Out[97]: 
array([[ 1,  2],
       [ 3,  4],
       [-1, -2]])

In [98]: c = np.array([[5,6,7],[8,9,10]])

In [99]: np.concatenate((a,c),axis=1)	# 效果等于 hstack
Out[99]: 
array([[ 1,  2,  5,  6,  7],
       [ 3,  4,  8,  9, 10]])

In [100]: 

8. argmax、argmin

argmax 返回数组中某个维度的最大值索引,当未指明维度时,返回 buffer 中最大值索引。如下所示:

In [100]: a = np.random.randint(1,10,(2,3))

In [101]: a
Out[101]: 
array([[5, 1, 6],
       [2, 1, 1]])

In [102]: a.argmax()
Out[102]: 2

In [103]: a.argmax(axis=0)
Out[103]: array([0, 0, 0], dtype=int64)

In [104]: a.argmax(axis=1)
Out[104]: array([2, 0], dtype=int64)

In [105]: 
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值