导入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