前言:
仅仅介绍Numpy的基础知识,且本人也在学习,所以会很浅。
Numpy的基本属性:
# 习惯上将numpy导入并命名为np
import numpy as np
首先,在python学习一文中,提及了列表的创建,我们先来创建一个简单的二维列表:
newlist = [[1,2,3], [4,5,6]]
这样我们创建了一个二行三列的列表,那应该怎么将其转换为矩阵呢?
matrix = np.array(newlist)
# 或者写成这种形式也是可以的 matrix = np.array([[1,2,3], [4,5,6]])
1、维度(dimension)属性:
当你拥有一个array对象后,你可以通过array.ndim来获取该矩阵的维度信息。
2、形状(Shape)属性:
如果你获得了一个未知的array对象,你应该如何确定该矩阵的形状(几行几列)呢,你可以使用array.shape来获取该矩阵的形状,这个属性是一个元组(n,m),行信息在前,列信息在后。(注意这里说的array是你定义的对象名,如我上文定义的对象名为martix,则要获取shape属性,应该为martix.shape)
3、大小(Size)属性:
当你想要确定这个矩阵内部存储了多少个元素时,你可以使用array.size来获得该属性。
Numpy创建array(数组):
语法:
基础创建:
np.array(object, dtype=None, copy=True, order='K', subok=False, ndmin=0)
参数解释:
- object:一个数组,在python中表现为你传入的参数应该为list形式;
- dtype(可选optional):data_type,数据的类型,由int和float两大类,可以自主设定位数(当不需要过高精确度而特别关注内存时,位数可以较小;反之应该较大。)
- copy(可选optional):默认(default)为真,直接复制对象(object);False时,不能够直接复制,而是需要object满足某些条件才能够进行复制(不多展开);
- order(可选optional):制定了矩阵的内存布局;若object不是数组,则默认为行主要(C)除非指定为列主要(F);若是数组成立,则满足下图,当copy因为其它原因被执行时,no copy与copy的结果是相同的
- subok(可选optional):默认为False,返回的数组作为基类数组;否则作为子类
- ndim(可选optional):可以指定生成数组的最小维度。
创建元素全为0的array:
np.zeros(shape, dtype = None, order = 'C')
参数解释(与上文相同的不再赘述):
shape:在介绍基本属性的时候有提及,是一个元组类型的值,(n,m)前行后列。
a = np.zeros((3,3), np.uint8)
print(a)
创建元素为全1的array:
np.ones(shape, dtype = None, order = 'C')
b = np.ones((3,3), np.uint8)
print(b)
创建一个有序的array:
np.arange([start, ]stop, [step, ] dtype = None )
和python中的range()函数类似。
但这样有一个问题,这样仅仅只是一个一维的数组而已,如果我们想要重新定义它的shape应该如何做呢?
np.arange(start, stop, step, dtype).reshape(shape)
注:在reshape中,shape虽仍然是原组,但是是小括号可以省略。
c = np.arange(12).reshape((4,3))
print(c)
创建一个均匀间隔的数值序列:
np.linspace(start, end, num[, endpoint = True])
参数解释:
- start:起始数值;
- end:终止数值,包不包括该数值取决于endpoint是否为真,为真则包括;
- num:数组中含有几个值;
- endpoint(可选optional):bool值,真则包括end,否则不包括。
d = np.linspace(12,23,12).reshape(4,3)
print(d)