NumPy多维数组
array函数应用
NumPy的array函数是创建一个数组,格式为array(object,dtype,ndmin)
- object是指想要创建的数组,即数据源
- dtype即data-type,可通过该属性来定义创建的数组的数据类型
- ndmin接收的值只能是int值,可以指定生成的数组应该具有的最小维数(注:生成的数组的行列积必须与源数据的元素个数相等)
例题:
创建数组
import numpy as np
data1 = [1,3,5,7]
w1 = np.array(data1)
print("w1:",w1)
data2 = (2,4,6,8)
w2 = np.array(data2)
print("w2",w2)
data3 = [[1,2,3,4],[5,6,7,8]]
w3 = np.array(data3)
print("w3:\n",w3)
输出结果如下
创建指定类型的数组
dt = np.array([1,2,3,4,5,6,7,2,5,3], dtype = float)
dt
输出结果如下
创建指定维数的数组
dt = np.array([1,2,3,4,5,6,7], ndmin = 2)
dt
输出结果如下
arange函数应用
arange函数可以通过起始值、终值和步长创建一维数组,创建的数组不包含终值
dt = np.arange(1,50,5)
dt
运行结果
linspace函数
- 当arange的参数是浮点型的时候,由于浮点的精度有限,通常不太可能去预测获得元素的数量。处于这个原因,通常选择更好的函数linspace,它接收元素数量作为参数。linspace函数通过制定起始值、终值和元素个数创建一维数组,默认包括数值。
- linspace跟arange的参数一样,都是起始值、终值以及步长,但是不同的是,linspace的步长是将起始值和终值之间的数值分割为等于步长数值的个数,且分割时,终值也在范围之内
使用linspace创建数组
dt = np.linspace(0,1,5)
dt
运行结果
logspace函数
logspace函数与linspace函数类似,不同的是logspace函数创建的是等比数列
dt = np.logspace(0,1,5)
dt
运行结果
zeros函数
zeros函数可以创建指定长度或形状的全0数组
print("一维零矩阵:",np.zeros(4))
print("二维零矩阵:\n",np.zeros([3,3]))
运行结果
ones函数
ones函数可以创建指定长度或形状的全1数组
print("一维壹矩阵:",np.ones(5))
print("二维壹矩阵:\n",np.ones([3,3]))
运行结果
diag函数
diag函数可以创建对角矩阵,即对角线元素为0或指定值,其他元素为0
print("0对角矩阵:\n",np.diag([0,0,0,0])) #指定值为0
print("指定数值对角矩阵:\n",np.diag([1,2,3,4])) #指定值为非零值
运行结果
ndarray对象属性和数据转换
ndarray是由array函数创建的多维数组,例如下图中的“AA”就是ndarray,他的内置属性有
- ndim,秩,即数据轴的个数。通俗点就是数组的维数
- shape,数组的维度
- size,数组元素个数
- dtype,数据类型
- itemsize,数组中每个元素的字节大小
import numpy as np
AA = np.array([[[1,2,3],[4,5,6]],[[12,3,1],[12,32,54]]])
print("ndim:",array.ndim) #由array函数创建的数组是三维数组,因此这里输出的是3
print("shape:",array.shape) #
print("size:",array.size)
print("dtype:",array.dtype)
print("itemsize:",array.itemsize)
运行结果
生成随机数
- 在NumPy.random模块中,提供了多种随机数的生成函数
- 用法:np.random.randint(low, high = None, size = None)
生成数组
import numpy as np
arr = np.random.randint(100, 200, size = (2,4)) #生成随机整数二维数组
arr1 = np.random.rand(5) #生成[0,1]内的随机数组
arr2 = np.random.rand(4,2) #生成[0,1]内的随机二维数组
print("生成随机整数:\n",arr)
print("一维数组:",arr1)
print("二维数组:\n",arr2)
运行结果
数组变换
数组重塑
- 对于定义好的数组,可以通过reshape方法改变其数组维度
- reshape方法还可以使其中一个参数为-1,表示数组的维度可以通过数据本身来推断
- 与reshape相反的方法是数据三开(ravel)