Numpy最重要的特点是 其N维数组对象ndarray,他是一系列同类型数据的集合,以 0 为下表 进行索引 

  ndarray 对象是用于存放同类型元素的多维数组。

  ndarray 中的每个元素在内存中都有相同存储大小的区域。 

 

Numpy 的一些属性

 

  import numpy as np

  a = np.array([1,2,3])

  print (a)

 

  输出结果如下:

  [1, 2, 3]

 

 

  # 多于一个维度

  import numpy as np

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

  print (a)

 

  输出结果如下:

  [[1, 2]

   [3, 4]]

 

 

  以上的输出结果可以看出什么是维度

 

  print(a.ndim) #维度

  print(a.shape) #维度,长度

  print(a.size) #元素个数

  print(a.dtype) #元素类型

  print(a.itemsize) #对象中每个元素的大小,字节为单位

  print(a.flags) #对象的内存信息

  print(a.real) #元素的实部

  print(a.image) #元素的虚部

  print(a.data) #包含实际数组的缓冲区,由于一般通过数组的索引获取元素,所以通常不需要使用这个属性。

 

  打印输出如下:

  

  

 

Numpy 创建 array

 

  a = np.array([1, 2, 3])

  输出结果:

  [1, 2, 3]

  我们这样就创建了一个 一维 的array

 

  如果我们创建 一个 二维 的 array:

  

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

  输出结果:

  [ [1, 2, 3]

    [4, 5, 6]]

 

  这样就创建了一个二维的array

  

  这里我们可以 定义每种array的 type

  a = np.array([1, 2, 3], dtype=np.int)    #这里 array 的 type 就是 dtype ; int 为整数的意思

  print(a.dtype)

  

  这里我们可以看到 array 的格式为 int32

 

  我们也可以自己定义 int 的位数:

  a = np.array([1, 2, 3], dtype=np.int64) #这里我们定义为 64位 的array 格式

  

  print(a.dtype)

  输出如下:

  

  

  int64 和 float64 位数都是可以更该 。位数越小 ,占用内存就越小

 

  我还可以生成全部为零的array:

  a = array.zeros((3,4)),dtype=np.int16) #生成一个全部为零的 三行 四列的 array

  print(a) #打印a

  

  同理 我们只需要 用 one, empty, 等。。调换上述中 zeros , 即可替换

 

  我们这里可以同样生成特定的 区域、

  a = np.arange(10,20,2)

  print(a)

  

  我们也可以重新定义 a 的场和宽:

   a = np.arange(12)

  print(a)

  

  a = np.arange(12).reshape((3,4)) #定义三行四列

  

 

 

  我们这里也是可以生成线段的:

  a = np.linspace((1,10,20)) #生成开头为1,结尾为10,20的意思就是说,1-10 中间有20段,自动匹配步长

  print(a)

  

  我们也是更改reshape的 

  a = np.linspace((1,10,20)).reshape((3,4))

 

 

  

NumPy 从已有的数组创建数组

  将列表转换为 ndarray:

    import numpy as np

    x = [1, 2, 3]

    a = np.asarray(x)

    print(a)

 

    打印如下:

    [1 2 3]

 

  将元组转化为 ndarray:

    import numpy as np

    x = (1, 2 , 3)

    a = np.asarray(x)

    print(a)

 

    打印如下:

    [1 2 3]

 

  将元组列表转化为 ndarray:

    import numpy as np

    x = [(1, 2, 3),(4, 5)]

    a = np.asarray(x)

    print(a)

 

    打印结果如下:

    [(1, 2, 3),(4, 5)]

 

 

  设置了 dtype 参数

    import numpy as np

    x = [1, 2, 3]

    a = np.asarray(x, dtype = float)

    print(a)

 

    打印如下:

    [1. 2. 3]

 

  

  

  numpy.frombuffer

 

    numpy.frombuffer 用于实现动态数组。

    numpy.frombuffer 接受 buffer 输入参数,以流的形式读入转化成 ndarray 对象。

 

    

   numpy.frombuffer(buffer, dtype = float, count = -1, offset = 0)

   注意:buffer 是字符串的时候,Python3 默认 str 是 Unicode 类型,所以要转成 bytestring 在原 str 前加上 b。

  参数:
    buffer 可以是任意对象,会以流的形式读入。
    dtype 返回数组的数据类型,可选
    count 读取的数据数量,默认为-1,读取所有数据。
    offset 读取的起始位置,默认为0

  实例
    import numpy as np  
  
    s = b'Hello World'

    a = np.frombuffer(s, dtype = 'S1')

    print(a)

  
    打印如下:

      [b'H' b'e' b'l' b'l' b'o' b' ' b'W' b'o' b'r' b'l' b'd']

 

  实例

    import numpy as np

    s = 'Hello World'

    a = np.frombuffer(s, dtype = 'S1')

    print(a)

 

    打印如下:

    ['H' 'e' 'l' 'l' 'o' ' ' 'W' 'o' 'r' 'l' 'd']

    

  

  numpy.fromiter

    numpy.fromiter 方法从可迭代对象中建立 ndarray 对象,返回一维数组。

    

    numpy.fromiter(iterable, dtype, count=-1)

    参数:

    iterable 可迭代对象

    dtype 返回数组的数据类型

    count 读取的数据数量,默认为-1,读取所有数据

 

  实例

    import numpy as np

    # 使用 range 创建列表对象

    list = range(5)

    it  = iter(list) #迭代对象list

    

    #使用迭代器创建 ndarray

    x = np.fromiter(it, dtype = float)

    print(a)

 

    打印如下:

    [0. 1. 2. 3. 4]

 

 

 

 

参考:http://www.runoob.com/numpy/numpy-tutorial.html

    


  

posted on 2018-11-24 21:20  童童学  阅读(598)  评论(0编辑  收藏  举报