安装numpy
通过命令提示符 pip install numpy
或者通过第三方发放版 Anaconda 进行鼠标操作安装
创建数组
直接通过numpy创建
import numpy as np # 导入numpy包
# 生成一些随机数据 二行三列的矩阵
data = np.random.randn(2, 3) # 生成随机数 二行三列的数组
print(data)
import numpy as np # 导入numpy包
# 生成一些随机数据 二行三列的矩阵
data = np.random.randn(2, 3) # 生成随机数 二行三列的数组
print(data)
通过将列表(list)转换为数组
data1 = [6, 7.5, 8, 0, 1] # 创建一个列表
arr1 = np.array(data1) # 将列表转换为数组
print(arr1) # 打印这个数组
data1 = [6, 7.5, 8, 0, 1] # 创建一个列表
arr1 = np.array(data1) # 将列表转换为数组
print(arr1) # 打印这个数组
嵌套列表会被转换为多维数组
data2 = [[1, 2, 3, 4], [5, 6, 7, 8]] # 创建一个嵌套列表
arr2 = np.array(data2) # 将列表转换为数组 二行四列的数组
print(arr2) # 打印这个数组
data2 = [[1, 2, 3, 4], [5, 6, 7, 8]] # 创建一个嵌套列表
arr2 = np.array(data2) # 将列表转换为数组 二行四列的数组
print(arr2) # 打印这个数组
创建arange数组
print(np.arange(15)) # 生成一个一行十五列 值为 0~14 的 类型为 int 的数组
print(np.arange(15)) # 生成一个一行十五列 值为 0~14 的 类型为 int 的数组
创建特定数组
print(np.zeros(10)) # 创建一行十列 值全为0 类型为 float 的数组
print(np.zeros((3, 6))) # 创建三行六列 值全为0 类型为 float 的数组
print(np.empty((2, 3, 2))) # 返回一个 两层 三行两列的 值为未初始化的垃圾值 类型为float 的数组
print(np.full((3,3), 2) # 创建了一个 3 * 3 值全为 2 的数组
print(np.zeros(10)) # 创建一行十列 值全为0 类型为 float 的数组
print(np.zeros((3, 6))) # 创建三行六列 值全为0 类型为 float 的数组
print(np.empty((2, 3, 2))) # 返回一个 两层 三行两列的 值为未初始化的垃圾值 类型为float 的数组
print(np.full((3,3), 2) # 创建了一个 3 * 3 值全为 2 的数组
创建数组的各种方式如下表
创建ndarray指定数据类型:
数据类型的表如下:
指定数据类型 创建ndarray
arr1 = np.array([1, 2, 3], dtype=np.float64) # 指定数据类型为 float64位
arr2 = np.array([1, 2, 3], dtype=np.int32) # 指定数据类型为 int32位
print(arr1.dtype) # 打印出arr1的数据类型
print(arr2.dtype) # 打印出arr2的数据类型
arr1 = np.array([1, 2, 3], dtype=np.float64) # 指定数据类型为 float64位
arr2 = np.array([1, 2, 3], dtype=np.int32) # 指定数据类型为 int32位
print(arr1.dtype) # 打印出arr1的数据类型
print(arr2.dtype) # 打印出arr2的数据类型
转换ndarray数组的数据类型
arr = np.array([1, 2, 3, 4, 5]) # 创建一个 默认 int32 类型的数组
print(arr.dtype) # 打印这个数组的类型
float_arr = arr.astype(np.float64) # 将这个数组转化为 float64 位的数组
print(float_arr.dtype) # 打印这个数组的类型
arr = np.array([1, 2, 3, 4, 5]) # 创建一个 默认 int32 类型的数组
print(arr.dtype) # 打印这个数组的类型
float_arr = arr.astype(np.float64) # 将这个数组转化为 float64 位的数组
print(float_arr.dtype) # 打印这个数组的类型
转换数据类型时的特别注意事项
arr = np.array([3.7, -1.2, -2.6, 0.5, 12.9, 10.1]) # 创建了一个 float64 位的数组
print(arr) # 打印一下
print(arr.astype(np.int32)) # 打印 转换这个数组之后的值 将 float64 位转换为 int32 位之后 小数部分会被舍弃
arr = np.array([3.7, -1.2, -2.6, 0.5, 12.9, 10.1]) # 创建了一个 float64 位的数组
print(arr) # 打印一下
print(arr.astype(np.int32)) # 打印 转换这个数组之后的值 将 float64 位转换为 int32 位之后 小数部分会被舍弃
如果字符串数组全是数字 也可使用 astype 将其转换为数值形式
numeric_strings = np.array(['1.25', '-9.6', '42'], dtype=np.string_) # 创建一个 字符串数组 内容全为数值
print(numeric_strings.astype(float)) # 将这个 全是数值的 字符串类型的数组 转换为 float 类型的数组
numeric_strings = np.array(['1.25', '-9.6', '42'], dtype=np.string_) # 创建一个 字符串数组 内容全为数值
print(numeric_strings.astype(float)) # 将这个 全是数值的 字符串类型的数组 转换为 float 类型的数组
dtype还有一个属性
int_array = np.arange(10) # 创建了一个 int 类型的数组
calibers = np.array([.22, .270, .357, .380, .44, .50], dtype=np.float64) # 创建了一个 float 类型的数组
print(int_array.astype(calibers.dtype)) # 将 float类型的数组类型 赋给 int 类型的数组
int_array = np.arange(10) # 创建了一个 int 类型的数组
calibers = np.array([.22, .270, .357, .380, .44, .50], dtype=np.float64) # 创建了一个 float 类型的数组
print(int_array.astype(calibers.dtype)) # 将 float类型的数组类型 赋给 int 类型的数组
查看数组的维度和数组的数据类型:
print('data shape:', data.shape) # 打印数组的维度
print('data dtype:', data.dtype) # 打印数组的类型
print('data shape:', data.shape) # 打印数组的维度
print('data dtype:', data.dtype) # 打印数组的类型
单独查看维度 和 查看维度
print(arr2.ndim) # 只显示是几维
print(arr2.shape) # 显示几行几列 几层
print(arr2.ndim) # 只显示是几维
print(arr2.shape) # 显示几行几列 几层
数学运算:
矩阵乘法:
#所有元素都乘以10
print('data * 10: \n', data * 10)
#所有元素都乘以10
print('data * 10: \n', data * 10)
数组乘数组 对应位置直接相乘得结果
data = np.array([[1., 2., 3.], [4., 5., 6.]]) # 创建一个数组
print(data) # 打印出这个数组
print(data * data) # 数组对应位置相乘即结果
data = np.array([[1., 2., 3.], [4., 5., 6.]]) # 创建一个数组
print(data) # 打印出这个数组
print(data * data) # 数组对应位置相乘即结果
矩阵除法和平方:
print(1 / data) # 每一个位置 用 1 除以 得出结果
print(data ** 0.5) # 每个位置 的 0.5 次方得出结果
print(1 / data) # 每一个位置 用 1 除以 得出结果
print(data ** 0.5) # 每个位置 的 0.5 次方得出结果
矩阵加法减法:
#每个元素与自身相加 对应位置直接相加得出结果
print('data + data : \n', data + data)
print(data - data) # 每个位置对应相减得出结果
#每个元素与自身相加 对应位置直接相加得出结果
print('data + data : \n', data + data)
print(data - data) # 每个位置对应相减得出结果
数组的比较会生成布尔类型的数组:
arr2 = np.array([[0., 4., 1.], [7., 2., 12.]])
print(arr2)
print(arr2 > arr) # 返回一个布尔类型的数组
arr2 = np.array([[0., 4., 1.], [7., 2., 12.]])
print(arr2)
print(arr2 > arr) # 返回一个布尔类型的数组