numpy beginner 3rdv ch2b 数组堆叠(jupyter note)

In [12]:

#coding=utf-8
import numpy as np
a = np.arange(9).reshape(3,3)
b = a * 2
print('hstack 接受tuple,因此必须使用内部圆括号')
c1 = np.hstack((a,b))
print(c1)
print("equalvalent method:")
c2 = np.concatenate((b,a),axis=1)
print(c2)

Output:

hstack 接受tuple,因此必须使用内部圆括号
[[ 0  1  2  0  2  4]
 [ 3  4  5  6  8 10]
 [ 6  7  8 12 14 16]]
equalvalent method:
[[ 0  2  4  0  1  2]
 [ 6  8 10  3  4  5]
 [12 14 16  6  7  8]]

In [13]:

# vertically
v1 = np.vstack((a,b))
print(v1)
print("equalvalent method:")
v2 = np.concatenate((b,a),axis=0)
print(v2)

Output:

[[ 0  1  2]
 [ 3  4  5]
 [ 6  7  8]
 [ 0  2  4]
 [ 6  8 10]
 [12 14 16]]
equalvalent method:
[[ 0  2  4]
 [ 6  8 10]
 [12 14 16]
 [ 0  1  2]
 [ 3  4  5]
 [ 6  7  8]]

In [16]:

#深度堆叠,在最后一个维度上
d1 = np.dstack((a,b))
print(d1)
print("按列堆")
d2 = np.column_stack((a,b))
print(d2)
print("等效方法")
print(np.hstack((a,b)) == np.column_stack((a,b)))

Output:

[[[ 0  0]
  [ 1  2]
  [ 2  4]]

 [[ 3  6]
  [ 4  8]
  [ 5 10]]

 [[ 6 12]
  [ 7 14]
  [ 8 16]]]
按列堆
[[ 0  1  2  0  2  4]
 [ 3  4  5  6  8 10]
 [ 6  7  8 12 14 16]]
[[ True  True  True  True  True  True]
 [ True  True  True  True  True  True]
 [ True  True  True  True  True  True]]

In [17]:

r2 = np.row_stack((a,b))
r3 = np.vstack((a,b))
print(r2)
print(r3)
print(r2==r3)

Output:

[[ 0  1  2]
 [ 3  4  5]
 [ 6  7  8]
 [ 0  2  4]
 [ 6  8 10]
 [12 14 16]]
[[ 0  1  2]
 [ 3  4  5]
 [ 6  7  8]
 [ 0  2  4]
 [ 6  8 10]
 [12 14 16]]
[[ True  True  True]
 [ True  True  True]
 [ True  True  True]
 [ True  True  True]
 [ True  True  True]
 [ True  True  True]]

In [26]:

print(np.hsplit(a,1))
print(np.hsplit(a,3))
print("equalvalent method:")
print(np.split(a,3,axis=1))

Output:

[array([[0, 1, 2],
       [3, 4, 5],
       [6, 7, 8]])]
[array([[0],
       [3],
       [6]]), array([[1],
       [4],
       [7]]), array([[2],
       [5],
       [8]])]
equalvalent method:
[array([[0],
       [3],
       [6]]), array([[1],
       [4],
       [7]]), array([[2],
       [5],
       [8]])]

In [27]:

print(np.vsplit(a,1))
print(np.vsplit(a,3))
print("equalvalent method:")
print(np.split(a,3,axis=0))

Output:

[array([[0, 1, 2],
       [3, 4, 5],
       [6, 7, 8]])]
[array([[0, 1, 2]]), array([[3, 4, 5]]), array([[6, 7, 8]])]
equalvalent method:
[array([[0, 1, 2]]), array([[3, 4, 5]]), array([[6, 7, 8]])]

In [31]:

c = np.arange(27)
c.shape = (3,3,3)
print(c)
np.dsplit(c,3)

Output:

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

 [[ 9 10 11]
  [12 13 14]
  [15 16 17]]

 [[18 19 20]
  [21 22 23]
  [24 25 26]]]
Out[31]:

[array([[[ 0],
         [ 3],
         [ 6]],
 
        [[ 9],
         [12],
         [15]],
 
        [[18],
         [21],
         [24]]]), array([[[ 1],
         [ 4],
         [ 7]],
 
        [[10],
         [13],
         [16]],
 
        [[19],
         [22],
         [25]]]), array([[[ 2],
         [ 5],
         [ 8]],
 
        [[11],
         [14],
         [17]],
 
        [[20],
         [23],
         [26]]])]

In [53]:

#属性
b=np.arange(24).reshape(3,8)
print(b.ndim)
print(b.size)
print(b.itemsize)
print(b.nbytes)
print(b.size *b.itemsize)
b.resize(4,6)
print(b)
print(b.T)

Output:

2
24
4
96
96
[[ 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  6 12 18]
 [ 1  7 13 19]
 [ 2  8 14 20]
 [ 3  9 15 21]
 [ 4 10 16 22]
 [ 5 11 17 23]]

In [59]:

cp = np.array([1.j+1,2.j+3])
print(cp)
print(cp.real)
print(cp.imag)
print(cp.dtype)
print(cp.dtype.str)

Output:

[1.+1.j 3.+2.j]
[1. 3.]
[1. 2.]
complex128
<c16

In [65]:

f = cp.flat
print(f)
or item in f : print(item)

Output:

<numpy.flatiter object at 0x00000000067D11B0>
(1+1j)
(3+2j)

In [75]:

c = np.arange(8)*2
print(c)
print(c.flat[[1,3,5]])
#双层方括号
c.flat[[1,3]] = 7
print(c)
c.flat = 7
print(c)

Output:

[ 0  2  4  6  8 10 12 14]
[ 2  6 10]
[ 0  7  4  7  8 10 12 14]
[7 7 7 7 7 7 7 7]

In [ ]:

#itemsize      size     nbytes
#        \      |     /
#ndim  --   *ndarray*   ---  T
#        /      |     \
#real        imag       flat

Output:

In [77]:

#转换
print(cp.tolist())
print(cp.astype('f'))

Output:

[(1+1j), (3+2j)]
[1. 3.]
C:\ProgramData\Anaconda3\lib\site-packages\ipykernel_launcher.py:3: ComplexWarning: Casting complex values to real discards the imaginary part
  This is separate from the ipykernel package so we can avoid doing imports until
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值