numpy数组的创建

267 阅读4分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

导入numpy

import numpy as np

numpy 提供的最重要的数据结构是 ndarray ,它是 python 中 list 的扩展。

一、依据现有数据创建数组

1.通过array()创建

函数定义方法:def array(p_object, dtype=None, copy=True, order='K', subok=False, ndmin=0):

使用:

  • 一维数组:a = np.array([0, 1, 2, 3, 4])
  • 二维数组:b = np.array([[11, 12, 13, 14, 15],  [16, 17, 18, 19, 20]])
  • 三维数组:c = np.array([[(1.5, 2, 3), (4, 5, 6)], [(3, 2, 1), (4, 5, 6)]],[[11, 12, 13, 14, 15],  [16, 17, 18, 19, 20]] )

两个一维之间加“,”,外边加[]。三维在二维中间加“,”,外边加[]

2.通过asarray()创建

  • 函数定义方法:def asarray(a, dtype=None, order=None):

                                     return array(a, dtype, copy=False, order=order)

  • 与array()区别:当数据源是ndarray 时, array() 仍然会 copy 出一个副本,占用新的内存,但不改变 dtype 时 asarray() 不会

3. fromfunction()

  • 函数定义方法:def fromfunction(function, shape, **kwargs):
  • 作用:从函数中创建数组
  • 应用场景:函数绘图用到
  • 例子:def f(x, y):

                     return 10 * x + y

                   x = np.fromfunction(f, ( 5 , 4 ), dtype= int )

二、依据ones和zeros创建数组

应用场景:初始化参数,

1.零数组

1.zeros() 函数:返回给定形状和类型的零数组。

  • 函数:def zeros(shape, dtype=None, order='C'):

2.zeros_like() 函数:返回与给定数组形状和类型相同的零数组。

  • 函数:def zeros_like(a, dtype=None, order='K', subok=True, shape=None):

2.一数组

1.ones() 函数:返回给定形状和类型的1数组。

  • 函数:def ones(shape, dtype=None, order='C'):

2.ones_like() 函数:返回与给定数组形状和类型相同的1数组。

  • 函数:def ones_like(a, dtype=None, order='K', subok=True, shape=None):

3.空数组

注:空数组不是没有数,而是随机数

1.empty() 函数:返回一个空数组,数组元素为随机数。

  • 函数:def empty(shape, dtype=None, order='C'):

  • 例子:

    x = np.empty( 5 )

    print (x)

    # [1.95821574e-306 1.60219035e-306 1.37961506e-306

    # 9.34609790e-307 1.24610383e-306]

2.empty_like 函数:返回与给定数组具有相同形状和类型的新数组。

  • 函数:def empty_like(prototype, dtype=None, order='K', subok=True, shape=None):

  • 例子:

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

    y = np.empty_like(x)

    print (y)

    # [[ 7209029 6422625 6619244]

    # [ 100 707539280 504]]

4.单位数组

1. eye() :返回一个对角线上为 1 ,其它地方为零的单位数组。

  • 函数:def eye(N, M=None, k=0, dtype=float, order='C'):

  • 例子:

    x = np.eye( 2 , 3 )

    print (x)

    # [[1. 0. 0.]

    # [0. 1. 0.]]

2. identity() :返回一个方的单位数组。

  • 函数:def identity(n, dtype=None):

  • 例子:

    x = np.identity( 4 )

    print (x)

    # [[1. 0. 0. 0.]

    # [0. 1. 0. 0.]

    # [0. 0. 1. 0.]

    # [0. 0. 0. 1.]]

5.对角数组

1.diag() :提取对角线或构造对角数组。

  • 函数:def diag(v, k=0):

6.常数数组

1. full() 函数:返回一个常数数组。

  • def full(shape, fill_value, dtype=None, order='C'):

2. full_like() 函数:返回与给定数组具有相同形状和类型的常数数组。

  • def full_like(a, fill_value, dtype=None, order='K', subok=True, shape=None):

​​​​​​​三、利用数值范围创建数组

1. arange() :返回给定间隔内的均匀间隔的值。

  • 函数:def arange([start,] stop[, step,], dtype=None):

2. linspace() :返回指定间隔内的等间隔数字。

  • 函数:def linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None, axis=0):

3. logspace() :返回数以对数刻度均匀分布。

函数:

  • def logspace(start, stop, num=50, endpoint=True, base=10.0, dtype=None, axis=0):

4. numpy.random.rand() 返回一个由 [0,1) 内的随机数组成的数组。

  • def rand(d0, d1, ..., dn):

四、结构数组的创建

使用参数 dtype 为定义的结构,np.array() 来创建数组

1.利用字典定义结构

例子:

2.利用列表定义结构

五、数组的属性

用来查找numpy数组的某些信息

  • numpy.ndarray.ndim 用于返回数组的维数(轴的个数)也称为秩,一维数组的秩为 1,二维数组的秩为 2,以此类推。
  • numpy.ndarray.shape 表示数组的维度,返回一个元组,这个元组的长度就是维度的数目,即 ndim 属性(秩)。
  • numpy.ndarray.size 数组中所有元素的总量,相当于数组的 shape 中所有元素的乘积,例如矩阵的元素总量为行与列的乘积。
  • numpy.ndarray.dtype ndarray 对象的元素类型。
  • numpy.ndarray.itemsize 以字节的形式返回数组中每一个元素的大小。

函数:

class ndarray ( object ):

shape = property ( lambda self : object (), lambda self , v: None , lambda self : None )

dtype = property ( lambda self : object (), lambda self , v: None , lambda self : None )

size = property ( lambda self : object (), lambda self , v: None , lambda self : None )

ndim = property ( lambda self : object (), lambda self , v: None , lambda self : None )

itemsize = property ( lambda self : object (), lambda self , v: None , lambda self : None )

在 ndarray 中所有元素必须是同一类型,否则会自动向下转换, int->float->str​​​​​​​