导入numpy
import numpy as np
Numpy最重要的一个特点就是它可以快速地创建一个N维数组对象,即numpy.ndarray。(本专栏ndarray对象和数组并不做概念上的区分)。
然后你可以利用ndarray这种数据结构非常高效地执行一些数学运算,并且语法风格和Python基本一致。
一、创建数组
1、用np.array()创建数组
通过array函数创建ndarray对象,即将python数组转换为ndarray对象
(1)创建一维数组
ndarray是一个通用的同构数据多维容器,其中的所有的元素必须是相同的类型,numpy会根据输入的实际情况进行转换。
data0 = [2, 4, 6.5, 8]
arr0 = np.array(data0)
(2)创建多维数组
data1 = [[1, 2, 3, 4], [5, 6, 7, 8]]
arr1 = np.array(data1)
(3)查看创建的arr0的变量类型
type(arr0)
(4)判断是否是ndarray类型
isinstance(arr0, np.ndarray)
(5)利用dtype关键字,传入合适的数据类型,显式地定义
arr2 = np.array(data1, dtype=np.float)
dtype的类型
np.float
np.int
np.str S1
np.unicode U1
np.bool
np.complex
(6)更改数组的数据类型
arr2.astype(np.int)
(7)数组的格式化输出
#对浮点数数组,保留3位有效数字,并禁用科学计数法;小数位数不够,后面不会补0
arr3 = np.array([3.141592653, 9.8], dtype=np.float16) # 定义一个一维数组
np.set_printoptions(precision=3, suppress=True)
2、创建数组的其他方式
(1)创建一个大小为10的全0数组
np.zeros(10, dtype=np.int)
(2)创建一个大小为5的全1数组
np.ones(5, dtype=np.int)
(3)创建空的(2,3)二维数组
np.empty((2, 3), dtype=np.int)
(4)创建一个大小为3×3的单位矩阵
# np.identity(n, dtype=)
np.identity(3, dtype=np.int)
Out: array([[1, 0, 0],
[0, 1, 0],
[0, 0, 1]], dtype=int8)
(5)创建3×4的矩形矩阵,并且为1的对角线向右偏移1个单位。
# np.eye(N, M=None, k=0, dtype=float, order='C')
np.eye(N=3, M=4, k=1, dtype=np.int)
Out: array([[0, 1, 0, 0],
[0, 0, 1, 0],
[0, 0, 0, 1]], dtype=int)
3、创建等差数组
(1)np.arange(start,stop,step)
指定 start、stop、以及step。arange和range一样,是左闭右开的区间。
也可以只传入一个参数,这种情况下默认start=0,step=1
np.arange(10)
np.arange(1, 10, 1)
np.arange(1.2, 3.8, 0.3)
(2)np.linspace(start, stop[, num=50[, endpoint=True[, retstep=False[, dtype=None]]]]])
start、stop参数,和arange()中一致;
num为待创建的数组中的元素的个数,默认为50
endpoint=True,则为左闭右闭区间,默认为True;endpoint=False,则为左闭右开区间
retstep用来控制返回值的形式。默认为False,返回数组;若为True,则返回由数组和步长组成的元祖
arr_linspace = np.linspace(1, 99, 11, endpoint=False)
(3)ndarray.reshape()
这里定义了一个长度为20的等差数组,然后通过reshape方法,调整数组的大小为5×4
arr_linspace.reshape(5, 4)
4、创建等比数组
(3)geomspace()方法,创建指数等比数列
np.geomspace(start, stop, num=50, endpoint=True, dtype=None)
start和stop,分别为区间的起始和终止值,为强制参数;
num 为待生成等比数列的长度,指定后,程序会自动计算取等比数列的公比;
endpoint默认为True,结果为左闭右必区间。否则为False,左闭右开区间;
np.geomspace(2, 16, 4)
(4)logspace()方法,创建对数等比数列
np.logspace(start, stop, num=50, endpoint=True, base=10.0, dtype=None)
start:区间起始值为ba