Python数据分析(3)-numpy中nd数组的创建

2021/7/1 22:24:05

本文主要是介绍Python数据分析(3)-numpy中nd数组的创建,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

  1. ndarray的内存结构

和其他的库一样,每个库都可能有自己独特的数据结构,例如OpenCV,numpy库的多维数组叫做ndarray( N dimensionality array ),它的内存结构如下图: 这里写图片描述 ndarray的内存结构 在这个结构体中有两个对象,一个是用来描述元素类型的头部区域,一个是用来储存数据的数据区域。(事实上大多数数据类型的数据都是这么储存的)。

2 ndarray对象的创建

2.1 ndarray多维数组的创建常规方法 创建一个3*3的数组并在屏幕打印它以及它的类型和维数:

    import numpy as np
    
    x = np.array([[0,1,2],[3,4,5],[6,7,8]],dtype = np.int32)
    print('这个数组是:',x)
    print('这个数组的数据类型是:',x.dtype)
    print('这个数组的大小:',x.shape)
[/code]
​
屏幕输出结果:  
![这里写图片描述](https://www.www.zyiz.net/i/?i=20161122145927579)
​
我们也可以采用更加直接的办法:
​
```code
    import numpy as np
    x = np.arange(0,9).reshape(3,3)
    print('这个数组是:',x)
    print('这个数组的数据类型是:',x.dtype)
    print('这个数组的大小:',x.shape)
[/code]
​
屏幕上打印输出的结果和前一种的结果是一样的。
​
2.2 ndarray多维数组的创建其他方法  
除了常规方法,numpy还提供了一些其他的创建方法:  
2.2.1 创建全0或者全1的数组
​
![这里写图片描述](https://www.www.zyiz.net/i/?i=20161122150127017)  
例如:  
![这里写图片描述](https://www.www.zyiz.net/i/?i=20161122150240674)
​
```code
    import numpy as np
    
    x = np.ones([3,3])
    print('这个数组是:',x)
    print('这个数组的数据类型是:',x.dtype)
    print('这个数组的大小:',x.shape)
[/code]
​
```code
    >>> x = np.arange(6) 
    >>> x = x.reshape(2,3)
    >>> x     
    array([[0, 1, 2], [3, 4, 5]]) 
    >>> np.ones_like(x) 
    array([[1, 1, 1], [1, 1, 1]])
    >>> y = np.arange(3, dtype=np.float) 
    >>> y 
    array([ 0., 1., 2.]) 
    >>> np.ones_like(y) 
    array([ 1., 1., 1.])
[/code]
​
当然也可以填充其他的数:
​
```code
    import numpy as np
    x = np.full([3,3],np.inf)
    print('这个数组是:',x)
    print('这个数组的数据类型是:',x.dtype)
    print('这个数组的大小:',x.shape)
[/code]
​
打印输出: ![这里写图片描述](https://www.www.zyiz.net/i/?i=20161122150223908)
​
2.2.2 从已存在的数据中创建数组  
![这里写图片描述](https://www.www.zyiz.net/i/?i=20161122150510183)
​
```code
    >>> np.array([1, 2, 3]) 
    array([1, 2, 3])
    
    >>> np.array([1, 2, 3.0]) 
    array([ 1., 2., 3.])
    
    >>> np.array([[1, 2], [3, 4]]) 
    array([[1, 2], [3, 4]])
    
    >>> np.array([1, 2, 3], ndmin=2) 
    array([[1, 2, 3]])
    
    >>> np.array([1, 2, 3], dtype=complex) 
    array([ 1.+0.j, 2.+0.j, 3.+0.j])
    
    >>> x = np.array([(1,2),(3,4)],dtype=[('a','<i4'),('b','<i4')]) 
    >>> x['a'] 
    array([1, 3])
[/code]
​
2.2.3 创建记录阵列(record array,可能翻译不准):创建一个阵列,将其他数组集中在一起管理,并可以命名:  
![这里写图片描述](https://www.www.zyiz.net/i/?i=20161122150534527)  
例如:
​
```code
    import numpy as np
    
    x1 = np.arange(0,3)
    x2 = np.array(['ff','hh','yy'])
    x3 = ([1,2,3])
    r = np.core.records.fromarrays([x1,x2,x3],names='a,b,c')
    print(r[2])
    print(r.a)
[/code]
​
2.2.4 创建字符数组  
numpy提供了专门的函数创建字符数组:np.chararray()  
首先看看它的参数:  
Parameters  
| ———-  
| shape : tuple  
| Shape of the array.  
| itemsize : int, optional  
| Length of each array element, in number of characters. Default is 1.  
| unicode : bool, optional  
| Are the array elements of type unicode (True) or string (False).  
| Default is False.  
| buffer : int, optional  
| Memory address of the start of the array data. Default is None,  
| in which case a new array is created.  
| offset : int, optional  
| Fixed stride displacement from the beginning of an axis?  
| Default is 0. Needs to be >=0.  
| strides : array_like of ints, optional  
| Strides for the array (see ndarray.strides for full description).  
| Default is None.  
| order : {‘C’, ‘F’}, optional  
| The order in which the array data is stored in memory: ‘C’ ->  
| “row major” order (the default), ‘F’ -> “column major”  
| (Fortran) order.
​
```code
     Examples
     |  --------
     |  >>> charar = np.chararray((3, 3))
     |  >>> charar[:] = 'a'
     |  >>> charar
     |  chararray([['a', 'a', 'a'],
     |         ['a', 'a', 'a'],
     |         ['a', 'a', 'a']],
     |        dtype='|S1')
     |  
     |  >>> charar = np.chararray(charar.shape, itemsize=5)
     |  >>> charar[:] = 'abc'
     |  >>> charar
     |  chararray([['abc', 'abc', 'abc'],
     |         ['abc', 'abc', 'abc'],
     |         ['abc', 'abc', 'abc']],
     |        dtype='|S5')
[/code]
​
2.2.5 创建数值数组  
![这里写图片描述](https://www.www.zyiz.net/i/?i=20161122150625644)
​
```code
    import numpy as np
    
    x1 = np.arange(0,3,1)
    x2 = np.linspace(0,3,4)
    x3 = np.logspace(1,8,3)
    x4 = np.mgrid[0:3,0:3]
    x5 = np.ogrid[0:3,0:3]
    print(x1,x2,x3,x4,x5)
[/code]
​
2.2.6 创建矩阵  
![这里写图片描述](https://www.www.zyiz.net/i/?i=20161122150654778)
​
2.2.7 矩阵类(The matrix class)  
![这里写图片描述](https://www.www.zyiz.net/i/?i=20161122150707872)
​
​
![在这里插入图片描述](https://www.www.zyiz.net/i/ll/?i=20210608151750993.gif)

 



这篇关于Python数据分析(3)-numpy中nd数组的创建的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程