机器学习---Numpy入门

xiaoxiao2021-02-28  56

1.安装Numpy

pip install numpy

2.基本操作

import numpy as np
# 数组的创建 arr = np.arange(15) # 创建一个15个元素的一维数组 print(arr) print(type(arr)) 结果为: [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14] <class 'numpy.ndarray'> # 数组数据类型的定义 # 创建一个3行4列数组,类型为float64 from numpy import float64 zeros_float_arr = np.zeros((3, 4), dtype=float64) print(zeros_float_arr) print(type(zeros_float_arr)) 结果为: array([[0., 0., 0., 0.], [0., 0., 0., 0.], [0., 0., 0., 0.]]) dtype('float64')
# 转换数组的数据类型 zeros_int32_arr = zeros_float_arr.astype(np.int32) print(zeros_int32_arr) print(zeros_int32_arr.dtype) 结果为: array([[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]) dtype('int32')
# 查看数组的维度和形状 a = np.array([0,1,2,3,4,5]) a a.ndim # 返回一个数组的维度 a.shape # 返回一个数组的形状 结果为: array([0,1,2,3,4,5]) 1 (6,)
# 更改数组的形状 b = a.reshape((3.2)) # 更改a数组的形状到二维 b b.ndim b.shape 结果为: array([0,1], [2,3], [4,5]) 2 (3,2)
# b的数值发生改变,a的数值也会改变 b[1][0] = 77 b a 结果为: array([0,1], [77,3], [4,5]) array([0,1,77,3,4,5])
# 对数组直接进行乘法 d = np.array([1,2,3,4,5]) d*2 d**2 [1,2,3,4,5]*2 结果为: array([2,4,6,8,10) array([1,4,9,16,25]) [1,2,3,4,5,1,2,3,4,5]
# 遍历 a[np.array(2,3,4)] a>4 # 用布尔值的方式表示 a[a>4] # 求出a>4的数值 a[a>4] = 4 # 整理孤立点 a a.clip(1,4) # 将数据修改到括号内的间隔范围内 a 结果为: array([77,3,4]) array([False,False,True,False,False,True],dtype=bool) array([77,5]) array([1,1,4,3,4,4])
# 处理不存在的值 c = np.array([1,2,np.NAN,3,4]) np.isnan(c) c[~np.isnan(c)] np.mean(c[~np.isnan(c)]) #求取均值 结果为: array([False,False,True,False,False]) array([1.,2.,3.,4.]) 2.5
# ndarray的索引和切片 arr2 = np.arange(12).reshape(3,4) print(arr2) # 表示的是第二行的元素 print(arr2[1]) # 表示的是第二行第二列的元素 print(arr2[1,1]) # 表示的是第1行到第二行,第3列到第四列的所有元素 print(arr2[0:2, 2:]) # 表示的是所有行,第2列到第3列的所有元素 print(arr2[:, 1:3]) 结果为: array([[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11]]) array([4, 5, 6, 7]) array([5]) array([[2, 3], [6, 7]]) array([[ 1, 2], [ 5, 6], [ 9, 10]])
# 元素统计函数 np.mean() # 求所有元素的平均值 np.sum() # 求所有元素的和 np.max() # 求所有元素的最大值 np.min() # 求所有元素的最小值 np.std() # 求所有元素的标准差 np.var() # 求所有元素的方差 np.argmax() # 求最大值的下标索引值 np.argmin() # 求最小值的下标索引值 # 创建一个3行4列的数组,值为0-10之间的任意数 arr = np.random.randint(0, 10, (3, 4)) print(arr) # 所有元素的和 print(np.sum(arr)) # 按列求和 print(np.sum(arr, axis=0)) # 按行求和 print(np.sum(arr, axis=1)) # 返回一个一维数组,每个元素都是之前所有元素的累加和 # print(np.cumsum(arr)) 结果为: array([[0, 9, 6, 8], [2, 7, 5, 8], [8, 0, 8, 7]]) 68 array([10, 16, 19, 23]) array([23, 22, 23]) array([ 0, 9, 15, 23, 25, 32, 37, 45, 53, 53, 61, 68], dtype=int32)

3.NumPy和list列表 (1)NumPy的运算速度比list列表的快 (2)NumPy的灵活性不如list列表,NumPy只支持一种数据类型;list列表支持多种数据类型。

a = np.array([1,2,3]) a.dtype 结果为: dtype('int64') # 也有可能为dtype('int32')

(3)如果的确需要使用不同的数据类型,python会强制它们使用最合理的公有的数据类型。

np.array([1, 'stringy']) np.array([1, 'stringy', set([1,2,3])]) 结果为: array([1, 'stringy'], dtype='<U11') array([1, 'stringy', {1,2,3}], dtype=object)
转载请注明原文地址: https://www.6miu.com/read-2625405.html

最新回复(0)