一.数组的创建
首先导入模块
import numpy as np
1. Numpy提供了array()函数,用来创建数组,创建一维和二维数组,多维数组的创建形式是一样的
arr1 = np.array([1, 2, 3, 4, 5]) # 一维数组
arr2 = np.array([[1.0, 2, 3, 4, 5], [6, 7, 8, 9, 10]]) # 二维数组,可以理解为矩阵形式
>>>
[1 2 3 4 5]
[[ 1. 2. 3. 4. 5.]
[ 6. 7. 8. 9. 10.]]
2. arange()函数创建一维数组
arr3 = np.arange(1, 11, 1)
>>>
[ 1 2 3 4 5 6 7 8 9 10]
需要注意的是arange(start,end,step)函数中包含开始值start,终值end,步长step,但是最终的数组中不包含end,比如 np.arange(1, 11, 1) 开始值为1,终值为11,步长为1,但是只能生成1-10的一维数组,不包括11
3. linspace()函数
arr4 = np.linspace(1, 11, 10)
print(arr4)
>>>
[ 1. 2.11111111 3.22222222 4.33333333 5.44444444 6.55555556
7.66666667 8.77777778 9.88888889 11. ]
注意linspace函数与arange函数的区别,np.linspace(1, 11, 10),包含开始值1,终值11,元素个数10,此时最终的数组中可包含11
4.ones(),zeros()函数
arr5 = np.ones(shape=(2, 3), dtype=float)
print(arr5)
arr6 = np.zeros(shape=(2, 3), dtype=int)
print(arr6)
>>>
[[1. 1. 1.]
[1. 1. 1.]]
[[0 0 0]
[0 0 0]]
ones()和zeros()是分别生成全为1和0的数组,通过shape()来指定数组的形状和dtype()来指定数组元素的类型
二. 数组的属性
属性 | 作用 |
---|---|
ndim | 数组的维度,表示多少维数组,返回2,则表示二维数组 |
shape | 数组的维度,返回的是数组的行数和列数 |
size | 返回数组中元素的个数 |
dtype | 返回数组中元素的类型 |
arr2 = np.array([[1.0, 2, 3, 4, 5], [6, 7, 8, 9, 10]]) # 二维数组,可以理解为矩阵形式
print(arr2)
print(arr2.ndim) # 表示数组的维度
print(arr2.shape) # 表示数组的维度,返回行列数
print(arr2.size) # 返回数组中元素的总个数
print(arr2.dtype) # 返回数组中元素的类型
>>>
[[ 1. 2. 3. 4. 5.]
[ 6. 7. 8. 9. 10.]]
2
(2, 5)
10
float64
值得注意的是,Numpy数组中要求所有元素都为同一类型,具有一定的局限性。pandas模块可以解决这个问题。
三. 数组的索引
一维和二维数组的索引
arr1 = np.array([1, 2, 3, 4, 5])
print(arr1[1]) # 数组的下标从0开始,返回位置为1的元素
>>>
2
print(arr1[0:2]) # 切片操作,中间用冒号隔开,返回位置为0,1的元素
>>>
[1 2]
arr2 = np.array([[1.0, 2, 3, 4, 5], [6, 7, 8, 9, 10]])
print(arr2[0:2, 0:2]) # 二维数组的切片操作,逗号之前为行索引,之后为列索引,行列索引位置用冒号隔开
>>>
[[1. 2.]
[6. 7.]]
print(arr2[:, 0:1]) # 默认行索引为数组的所有行,第1列
>>>
[[1.]
[6.]]
print(arr2[0:1, :]) # 默认列索引为数组的所有列,第1行
>>>
[[1. 2. 3. 4. 5.]]
四. Numpy的统计分析
包括求和sum,均值mean,方差var,标准差std,最大值max,最小值min等,注意的是这些值默认返回float 类型
import numpy as np
arr2 = np.array([[1.0, 2, 3, 4, 5], [6, 7, 8, 9, 10]])
print(arr2.sum()) # 全部元素求和 55.0
print(arr2.mean()) # 求均值 5.5
print(arr2.var()) # 方差 8.25
print(arr2.std()) # 标准差 2.8722813232690143
print(arr2.max()) # 全部元素的最大值 10.0
print(arr2.min()) # 全部元素最小值 1.0