Python<Numpy常见用法>

1.基本数据类型
这里写图片描述

2.修改shape

In [18]: y=np.arange(2*3*4)

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

In [20]: y.shape=(3,8)

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

In [22]: y.shape=(2,3,4)

In [23]: y
Out[23]:
array([[[ 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.itemsize查看数据类型在内存中占用的字节数

In [36]: a=np.array(5,dtype=np.float)

In [37]: a
Out[37]: array(5.0)

In [38]: a.dtype
Out[38]: dtype('float64')

In [39]: a.dtype.itemsize
Out[39]: 8

In [40]: a=np.array(5,dtype=np.float16)

In [41]: a.dtype.itemsize
Out[41]: 2

4.切片索引固定步长选择元素

In [46]: a[:7:2]
Out[46]: array([0, 2, 4, 6])

In [47]: a[:7:3]
Out[47]: array([0, 3, 6])

In [48]: a=np.arange(9)

In [49]: a[:7:2]
Out[49]: array([0, 2, 4, 6])

In [50]: a[:7:3]
Out[50]: array([0, 3, 6])

5.指定间隔翻转数组

In [46]: a[:7:2]
Out[46]: array([0, 2, 4, 6])

In [47]: a[:7:3]
Out[47]: array([0, 3, 6])

In [48]: a=np.arange(9)

In [49]: a[:7:2]
Out[49]: array([0, 2, 4, 6])

In [50]: a[:7:3]
Out[50]: array([0, 3, 6])

6.选取N维数组中的指定元素

In [55]: b=np.arange(24).reshape(2,3,4)

In [56]: b
Out[56]:
array([[[ 0,  1,  2,  3],
        [ 4,  5,  6,  7],
        [ 8,  9, 10, 11]],

       [[12, 13, 14, 15],
        [16, 17, 18, 19],
        [20, 21, 22, 23]]])

In [57]: b[0]
Out[57]:
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11]])

In [58]: b[:,0]
Out[58]:
array([[ 0,  1,  2,  3],
       [12, 13, 14, 15]])

In [59]: b[:,:,0]
Out[59]:
array([[ 0,  4,  8],
       [12, 16, 20]])
#另外一种方法
In [60]: b[...,0]
Out[60]:
array([[ 0,  4,  8],
       [12, 16, 20]])

7.改变数组的维度

In [61]: b
Out[61]:
array([[[ 0,  1,  2,  3],
        [ 4,  5,  6,  7],
        [ 8,  9, 10, 11]],

       [[12, 13, 14, 15],
        [16, 17, 18, 19],
        [20, 21, 22, 23]]])
#返回一个原数组的view
In [62]: b.ravel()
Out[62]:
array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16,
       17, 18, 19, 20, 21, 22, 23])

In [63]: b
Out[63]:
array([[[ 0,  1,  2,  3],
        [ 4,  5,  6,  7],
        [ 8,  9, 10, 11]],

       [[12, 13, 14, 15],
        [16, 17, 18, 19],
        [20, 21, 22, 23]]])
#flatten()重新申请内存保存结果
In [64]: b.flatten()
Out[64]:
array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16,
       17, 18, 19, 20, 21, 22, 23])

In [65]: b
Out[65]:
array([[[ 0,  1,  2,  3],
        [ 4,  5,  6,  7],
        [ 8,  9, 10, 11]],

       [[12, 13, 14, 15],
        [16, 17, 18, 19],
        [20, 21, 22, 23]]])
In [66]: b.shape=(4,6)

In [67]: b
Out[67]:
array([[ 0,  1,  2,  3,  4,  5],
       [ 6,  7,  8,  9, 10, 11],
       [12, 13, 14, 15, 16, 17],
       [18, 19, 20, 21, 22, 23]])

8.数组转置

In [70]: b.T
Out[70]:
array([[ 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 [71]: b.transpose()
Out[71]:
array([[ 0,  6, 12, 18],
       [ 1,  7, 13, 19],
       [ 2,  8, 14, 20],
       [ 3,  9, 15, 21],
       [ 4, 10, 16, 22],
       [ 5, 11, 17, 23]])

9.reshape和resize
后者直接修改源数组

In [75]: b.reshape(2,3,4)
Out[75]:
array([[[ 0,  1,  2,  3],
        [ 4,  5,  6,  7],
        [ 8,  9, 10, 11]],

       [[12, 13, 14, 15],
        [16, 17, 18, 19],
        [20, 21, 22, 23]]])

In [76]: b
Out[76]:
array([[ 0,  1,  2,  3,  4,  5],
       [ 6,  7,  8,  9, 10, 11],
       [12, 13, 14, 15, 16, 17],
       [18, 19, 20, 21, 22, 23]])

In [77]: b.resize(2,3,4)

In [78]: b
Out[78]:
array([[[ 0,  1,  2,  3],
        [ 4,  5,  6,  7],
        [ 8,  9, 10, 11]],

       [[12, 13, 14, 15],
        [16, 17, 18, 19],
        [20, 21, 22, 23]]])

10.数组组合

水平组合

这里写图片描述

In [14]: a
Out[14]:
array([[0, 1, 2],
       [3, 4, 5],
       [6, 7, 8]])

In [15]: b
Out[15]:
array([[ 0,  2,  4],
       [ 6,  8, 10],
       [12, 14, 16]])

In [16]: np.hstack((a,b))
Out[16]:
array([[ 0,  1,  2,  0,  2,  4],
       [ 3,  4,  5,  6,  8, 10],
       [ 6,  7,  8, 12, 14, 16]])

In [17]: np.concatenate((a,b),axis=1)
Out[17]:
array([[ 0,  1,  2,  0,  2,  4],
       [ 3,  4,  5,  6,  8, 10],
       [ 6,  7,  8, 12, 14, 16]])

concatenate的axis的要么是0要么是1,前者竖向组合,后者水平组合

垂直组合

In [18]: np.vstack((a,b))
Out[18]:
array([[ 0,  1,  2],
       [ 3,  4,  5],
       [ 6,  7,  8],
       [ 0,  2,  4],
       [ 6,  8, 10],
       [12, 14, 16]])

In [20]: np.concatenate((a,b),axis=0)
Out[20]:
array([[ 0,  1,  2],
       [ 3,  4,  5],
       [ 6,  7,  8],
       [ 0,  2,  4],
       [ 6,  8, 10],
       [12, 14, 16]])

深度组合

In [24]: a
Out[24]:
array([[0, 1, 2],
       [3, 4, 5],
       [6, 7, 8]])

In [25]: b
Out[25]:
array([[ 0,  2,  4],
       [ 6,  8, 10],
       [12, 14, 16]])

In [26]: np.dstack((a,b))
Out[26]:
array([[[ 0,  0],
        [ 1,  2],
        [ 2,  4]],

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

       [[ 6, 12],
        [ 7, 14],
        [ 8, 16]]])

还可以这么玩:


In [38]: a=np.arange(10)

In [39]: b=a*3

In [40]: b
Out[40]: array([ 0,  3,  6,  9, 12, 15, 18, 21, 24, 27])

In [41]: np.stack((a,b),axis=0)
Out[41]:
array([[ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9],
       [ 0,  3,  6,  9, 12, 15, 18, 21, 24, 27]])

In [42]: np.stack((a,b),axis=1)
Out[42]:
array([[ 0,  0],
       [ 1,  3],
       [ 2,  6],
       [ 3,  9],
       [ 4, 12],
       [ 5, 15],
       [ 6, 18],
       [ 7, 21],
       [ 8, 24],
       [ 9, 27]])

行组合:

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

In [44]: b
Out[44]: array([ 0,  3,  6,  9, 12, 15, 18, 21, 24, 27])

In [45]: np.column_stack((a,b))
Out[45]:
array([[ 0,  0],
       [ 1,  3],
       [ 2,  6],
       [ 3,  9],
       [ 4, 12],
       [ 5, 15],
       [ 6, 18],
       [ 7, 21],
       [ 8, 24],
       [ 9, 27]])




In [48]: a=np.arange(9).reshape(3,3)

In [49]: a
Out[49]:
array([[0, 1, 2],
       [3, 4, 5],
       [6, 7, 8]])

In [50]: b=a*2

In [51]: b
Out[51]:
array([[ 0,  2,  4],
       [ 6,  8, 10],
       [12, 14, 16]])

In [52]: np.column_stack((a,b))
Out[52]:
array([[ 0,  1,  2,  0,  2,  4],
       [ 3,  4,  5,  6,  8, 10],
       [ 6,  7,  8, 12, 14, 16]])


In [56]: np.column_stack((a,b))==np.hstack((a,b))
Out[56]:
array([[ True,  True,  True,  True,  True,  True],
       [ True,  True,  True,  True,  True,  True],
       [ True,  True,  True,  True,  True,  True]], dtype=bool)

行组合

In [57]: np.row_stack((a,b))
Out[57]:
array([[ 0,  1,  2],
       [ 3,  4,  5],
       [ 6,  7,  8],
       [ 0,  2,  4],
       [ 6,  8, 10],
       [12, 14, 16]])

In [58]: np.row_stack((a,b))==np.vstack((a,b))
Out[58]:
array([[ True,  True,  True],
       [ True,  True,  True],
       [ True,  True,  True],
       [ True,  True,  True],
       [ True,  True,  True],
       [ True,  True,  True]], dtype=bool)

11.数组切割

In [61]: a
Out[61]:
array([[0, 1, 2],
       [3, 4, 5],
       [6, 7, 8]])

In [62]: np.hsplit(a,3)
Out[62]:
[array([[0],
        [3],
        [6]]), 
 array([[1],
        [4],
        [7]]),
 array([[2],
        [5],
        [8]])]

垂直切割:

In [67]: np.vsplit(a,3)
Out[67]: [array([[0, 1, 2]]), array([[3, 4, 5]]), array([[6, 7, 8]])]

深度切割

In [70]: c
Out[70]:
array([[[ 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]]])

In [71]: np.dsplit(c,3)
Out[71]:
[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]]])]

12.数组属性
ndim属性,给出数组的维数,或数组轴的个数:

In: b
Out:
array([[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,11],
 [12,13,14,15,16,17,18,19,20,21,22,23]])
In: b.ndim
Out: 2

size属性,给出数组元素的总个数,如下所示:

In: b.size
Out: 24

itemsize属性,给出数组中的元素在内存中所占的字节数:

In: b.itemsize
Out: 8

如果你想知道整个数组所占的存储空间,可以用nbytes属性来查看。这个属性的值其实
就是itemsize和size属性值的乘积:

In: b.nbytes
Out: 192
In: b.size * b.itemsize
Out: 192 

13.读取CSV文件

#!/usr/bin/python
# coding=UTF-8
import numpy as np
#读取整个文件夹的内容delimiter指定文件中的分隔符,dtype指定类型
content=np.loadtxt('data.csv', delimiter=',',dtype=str)
print content
print '第一行第一个元素:'
print content[0][0]


#读取指定列,unpack参数设置为True,意思是分拆存储不同列的数据
one,two=np.loadtxt('data.csv',delimiter=',',dtype=str,usecols=(0,1),unpack=True)
print one,two
print one[0]

#读取整个文件夹的内容delimiter指定文件中的分隔符,dtype指定类型
content=np.genfromtxt('data.csv',delimiter=',',dtype=str)
print content

one,two=np.genfromtxt('data.csv',delimiter=',',usecols=(0,1),unpack=True,dtype=str)
print one,two
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值