2.1 掌握NumPy数组对象ndarray
- 2.2.1 创建数组对象
- 1.数组创建
- 2.数组属性:ndarray(数组)是存储单一数据类型的多维数组。
- 3.数组数据类型
- 2.1.2 生成随机数
- random模块常用随机数生成函数
- 2.1.3 通过索引访问数组
- 1.一维数组的索引
- 2、多维数组的索引
- 2.1.4 变换数组的形态
ndarrary:NumPy库的心脏
ndarray:多维数组,具有矢量运算能力,且快速、节省空间
可对整组数据进行快速运算的标准数学函数、线性代数、随机数生成等功能
import numpy as np
NumPy提供了两种基本的对象:ndarray和ufunc。
narray是存储但艺术组类型的多维数组。
ufunc是能够对数组进行处理的函数。
2.2.1 创建数组对象
1.数组创建
numpy.array(object, dtype=None, copy=True, order=‘K’,subok=False, ndmin=0)
array函数的主要参数及其说明
import numpy as np
arr1=np.array([1,2,3,4]) # 创建一维数组
print("一维数组:", arr1)
arr2 = np.array([[1,2,3,4], [4,5,6,7], [7,8,9,10]]) #创建二维数组
print("二维数组:\n", arr2)
2.数组属性:ndarray(数组)是存储单一数据类型的多维数组。
print("维数:", arr2.ndim)
print("形状:", arr2.shape)
print("元素个数:", arr2.size)
print("类型:", arr2.dtype)
print("元素大小:", arr2.itemsize)
import numpy as np
arr1=np.array([1,2,3,4]) # 创建一维数组
print("一维数组:", arr1)
arr2 = np.array([[1,2,3,4], [4,5,6,7], [7,8,9,10]]) #创建二维数组
print("二维数组:\n", arr2)
arr2 = np.array([[1,2,3,4], [4,5,6,7], [7,8,9,10]])
print(arr2)
print("维数:", arr2.ndim)
print("形状:", arr2.shape)
print("元素个数:", arr2.size)
print("类型:", arr2.dtype)
print("元素大小:", arr2.itemsize)
# 重新设置数组的shape属性
arr2.shape = 4,3
print(arr2)
# 使用arange函数创建数组
# 通过指定开始值、终值和步长,不含终值
print(np.arange(0,1,0.1))
# 使用linspace函数创建数组
# 通过指定开始值、终值和元素个数,包括终值
print(np.linspace(0,1,5))
# 使用logspace函数创建数组
# 通过指定开始值、终值和元素个数,包括终值
#logspace函数和linspace函数类似,创建的是等比数列
print(np.logspace(0,1,5))
# 使用zeros函数创建数组
# 创建全部为0的数组
print(np.zeros((2,3)))
# 使用ones函数创建数组
# 创建全部为1的数组
print(np.ones((2,3)))
# 使用eye函数创建数组
# 创建主对角线为1,其余为0的数组
print(np.eye(3))
# 使用diag函数创建数组
# 创建主对角线为任意值,其余为0的数组
print(np.diag([1,2,3,4]))
3.数组数据类型
NumPy基本数据类型与其取值范围(部分)
print(float(5)) # 整型转为浮点数
print(int(23.4)) # 浮点数转为整型
2.1.2 生成随机数
random函数是最常见的生成随机数的方法。
print(np.random.random(10))
rand函数可以生成均匀分布的随机数
print(np.random.rand(2,3))
randn函数可以生成服从正态分布的随机数
print(np.random.randn(2,3))
randint函数可以生成给定上下限范围的随机数
numpy.random.randint(low,high=None, size=None, dtype=‘1’) # size为数组的shape
创建一个最小值不低于 2、最大值不高于 10 的 2 行 3 列数组
print(np.random.randint(2,10,size=[2,3]))
random模块常用随机数生成函数
2.1.3 通过索引访问数组
1.一维数组的索引
arr = np.arange(10)
print(arr)
print(arr[8])
print(arr[1:8]) # 包括arr[1],但不包括arr[8]
print(arr[1:8:2]) #2表示步长隔一个元素取一个元素
2、多维数组的索引
多维数组的每一个维度都有一个索引,各个维度的索引之间用逗号隔开。
arr = np.array([[1,2,3,4,5], [4,5,6,7,8], [6,7,8,9,0]])
print(arr)
print(arr[0, 3:5]) # 索引第0行中第3列和第4列的元素
print('++++++++++++')
print(arr[1:, 2:]) #第2行第2行的第3-5列
print('-----------')
print(arr[:,2])
2.1.4 变换数组的形态
arr = np.arange(12)
print(arr)
arr = arr.reshape(3,4) # reshape()改变数组的形状
print(arr)
print(arr.ravel()) #ravel()展平数组
print(arr.flatten()) # flatten()横向展平
print(arr.flatten('F')) # flatten()纵向展平
print('2------------')
arr2 = arr*3
print(arr2)
print(np.hstack((arr,arr2))) # 使用hstack()函数横向组合
print(np.vstack((arr,arr2))) # 使用vstack()函数横向组合
print(np.concatenate((arr,arr2),axis=1)) # 使用concatenate()函数组合,axis=1横向,axis=0纵向
print(np.hsplit(arr,2)) #使用hsplit()横向分割
print(np.vsplit(arr,1)) #使用vsplit()纵向分割
print(np.split(arr,2,axis=1)) #使用split()分割,axis=1横向,axis=0纵向