1、使用array函数创建
numpy模块的array函数可以生成多维数组。例如,如果要生成一个二维数组,需要向array函数传递一个列表类型的参数。每个列表元素是一维的ndarray类型数组,作为二维数组的行。
另外,通过ndarray类的shape属性可以获得数组每一维的元素个数(元组形式),也可以通过shape[n]形式获得每一维的元素个数,其中n是维度,从0开始。
其语法格式如下:
numpy.array(obj, dtype=None, copy=True, order=None, subok=False, ndmin=0)
其中:
obj:数组或嵌套的数列
dtype:数组元素的数据类型,可选
copy:对象是否需要复制,可选
order:创建数组的样式,C为行方向,F为列方向,A为任意方向(默认)
subok:默认返回一个与基类类型一致的数组
ndmin:指定生成数组的最小维度
创建一维数组
import numpy as np
one_array = np.array([1, 2, 3, 4, 5])
print(one_array)
print('维度:', one_array.shape)
创建二维数组
two_array = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(two_array )
print('维度:', two_array.shape)
dtype参数的使用
# 生成一个复数的数组
comp_array = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9], dtype=complex)
print(comp_array )
ndmin参数的使用
# 生成一个最小维度为3的数组
three_array = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9], ndmin=3)
print(three_array)
2、使用arange函数创建
使用arange函数创建数值范围并返回ndarray对象
函数语法格式如下:
numpy.arange(start, end, stpe, dtype)
arange函数与range函数功能类型,只是多了一个dtype参数
创建一维数组
import numpy as np
arr1 = np.arange(1, 10, dtype=int)
print('arr1:', arr1)
arr2 = np.arange(1, 10, 2, dtype=float)
print('arr2:', arr2)
其实,你可以将arange看作array+range两个函数的综合结构,执行顺序为range—>array,即先生成一个列表,再转成数组
那么,在使用arange函数创建一个二维数组时,就需要使用到array函数
two_arr = np.array([np.arange(1, 4), [np.arange(4, 7), [np.arange(7, 10)])
print(two_arr)
print('维度:', two_arr.shape)
3、使用random函数创建
numpy中random函数常用来生成随机数,其包含了很多的常用方法。
函数 | 说明 |
seed | 确定随机生成器种子 |
permutation | 返回一个序列的随机排列或返回一个随机排列的范围 |
shuffle | 对一个序列随机的排序 |
choice | 随机选择一个数或数组 |
rand | 产生均匀分布的样本值 |
randint(low, high=None, size) | 如果high=None, 则返回一个[0, low)的size大小的数组,如果有high,则返回一个[low, high)的size大小的数组 |
random(size=None) | 返回[0.0, 1.0)范围size大小的随机数 |
randn(d0, d1, ..., dn) | 返回一个或一组样本, 具有标准正态分布(期望为0,方差为1)。dn表示每个维度 |
(1)random.random(size=None)的使用方法
import numpy as np
# 生成一个一维(3,)的随机数组
arr1 = np.random.random(size = 3)
print('arr1:', arr1)
# 生成一个二维(3,5)的随机数组
arr2 = np.random.random(size = (3, 5))
print('arr2:', arr2)
(2)random.randint()的使用方法
import numpy as np
# 生成一个一维(3,)的[0, 6)随机数组
arr1 = np.random.randint(6, size = 3)
print('arr1:', arr1)
# 生成一个一维(3)的[3, 10)随机数组
arr2 = np.random.randint(3, 10, size = 3)
print('arr2:', arr2)
# 生成一个二维(3,5)的[3, 10)随机数组
arr3 = np.random.randint(3, 10, size = (3, 5))
print('arr3:', arr3)
(3)random.randn()的使用方法
import numpy as np
# 生成一个一维(1,)的呈标准正太分布的随机数组
arr1 = np.random.randn()
print('arr1:', arr1)
# 生成一个二维(3,5)的呈标准正太分布的随机数组
arr2 = np.random.randn(3, 5)
print('arr2:', arr2)
# 生成一个包含两个(3,5)的三维的呈标准正太分布的随机数组
arr3 = np.random.randn(2, 3, 5)
print('arr3:', arr3)
(4)random.normal()的使用方法
import numpy as np
# 生成一个呈正太分布(高斯分布)loc:期望, scale:方差, size:形状
arr = np.random.normal(loc=1, scale=3, size=(4,5))
print('arr:', arr)
4、其他方式创建
(1)zeros函数
创建指定大小的数组,数组元素以0来填充
其语法格式为:
numpy.zeros(shape, dtype=float, order='C')
例:
import numpy as np
arr1 = np.zeros(7)
print('arr1:', arr1)
arr2 = np.zeros((5,), dtype=int)
print('arr2:', arr2)
arr3 = np.zeros((5,3))
print('arr3:', arr3)
(2)ones函数
创建指定形状的数组,数组元素以1来填充
其语法格式为:
numpy.ones(shape, dtype=None, order='C')
例:
import numpy as np
arr1 = np.ones(7)
print('arr1:', arr1)
arr2 = np.ones((5,3), dtype=int)
print('arr2:', arr2)
(3)empty函数
empty函数用来创建一个指定形状(shape)、数据类型(dtype)且未初始化的数组,里面元素的值是之前内存的值。
其语法格式为:
numpy.empty(shape, dtype=float, order='C')
例:
import numpy as np
arr1 = np.empty((5,3), dtype=int)
print(arr1)
(4)linspace函数
linspace函数用于创建一个一维数组,数组是一个等差数列构成的。
其语法格式为:
numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)
其中:
num:要生成的等步长的样本数量,默认为50
endpoint:该值为True时,数列中包含stop值,反之不包含,默认是True
retstep:如果为True时, 生成的数组中会显示间距,反之不显示
例:
import numpy as np
arr1 = np.linspace(2, 20)
print('arr1:', arr1)
arr2 = np.linspace(2, 20, 10)
print('arr2:', arr2)
arr3 = np.linspace(2, 20, 10, endpoint=False)
print('arr3:', arr3)
arr4 = np.linspace(2, 20, 10, retstep=True)
print('arr4:', arr4)
(5)logspace函数
logspace函数用于创建一个等比数列。
其语法格式为:
numpy.logspace(start, stop, num=50, endpoint=True, base=10.0, dtype=None)
其中:
base:对数log的底数
例:
import numpy as np
arr1 = np.logspace(2, 20, 10, base=2)
print(arr1)
5、ndarray对象
Numpy最重要的一个特点是其N维数组对象ndarray,它是一系列同类型数据的集合,以0下标为开始的元素索引。
ndarray对象是用于存放同类型元素的多维数组
ndarray中的每个元素在内存中都有相同存储大小的区域
ndarray内部由以下内容组成:
一个指向数据(内存或内存映射文件中的一块数据)的指针。
数据类型或dtype,描述在数组中固定大小值的格子。
一个表示数组形状(shape)的元组,表示各维度大小的元组。
那么,ndarray对象的属性有(也就是数组的属性):
属性 | 说明 |
ndarray.ndim | 秩,即轴的数量或维度数量 |
ndarray.shape | 数组的维度,对于矩阵,n行m列 |
ndarray.size | 数组元素的总个数,相当于.shape中的n*m的值 |
ndarray.dtype | ndarray对象的元素类型 |
ndarray.itemszie | ndarray对象中每个元素的大小,以字节为单位 |
ndarray.flages | ndarray对象的内存信息 |
ndarray.real | ndarray元素的实部 |
ndarray.imag | ndarray元素的虚部 |
ndarray.data | 包含实际数组元素的缓冲区,由于一般通过数组的索引获取元素,所以通常不需要使用这个属性 |
各个属性的使用
import numpy as np
arr1 = np.random.randint(10, size=8)
print(arr1)
arr2 = np.random.randint(10, size=(4,6))
print(arr2)
arr3 = np.random.randn(4, 5, 6)
print(arr3)
print('ndim属性:', arr1.ndim, arr2.ndim, arr3.ndim)
print('shape属性:', arr1.shape, arr2.shape, arr3.shape)
print('dtype属性:', arr1.dtype, arr2.dtype, arr3.dtype)
print('size属性:', arr1.size, arr2.size, arr3.size)
print('itemsize属性:', arr1.itemsize, arr2.itemsize, arr3.itemsize)