github博客传送门

安装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 的数组

创建数组的各种方式如下表

加一个维度3维变4维python numpy 增加维度_数组

创建ndarray指定数据类型:

数据类型的表如下:

加一个维度3维变4维python numpy 增加维度_数组_02


加一个维度3维变4维python numpy 增加维度_数据类型_03

指定数据类型 创建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)  # 返回一个布尔类型的数组