本文已参与「新人创作礼」活动,一起开启掘金创作之路。
导入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