自学内容网 自学内容网

机器学习3--numpy

一、numpy是什么?

  1. numpy是一个开源的python科学计算库,用于处理任意维度的数组。
  2. numpy用ndarray处理多维数组。

import numpy as np
np.array创建数组

  1. 机器学习数据量很大,ndarray速度快。
  2. ndarray的优势:
    • 内存块风格,一体式存储,数据类型一样(存储数据地址连续,直接存取,不需要找地址);
    • 支持并行化运算;
    • 效率高于python

二、N维数组

数组属性

.shape
.ndim 数组维数
.size 元素数量
.itemsize 元素字节大小
.dtype 元素类型

import numpy as np
a = np.array(["python","hello","i"],dtype = np.string_)
#指定类型

三、数组基本操作

  1. 生成数组

(1)0,1数组,固定范围数组

import numpy as np
#生成0、1数组
ones = np.ones([4,8])
np.zeros_like(ones)
#生成现有数组
a = np.array([[1,2,3],[4,5,6]])
a1 = np.array(a)#深拷贝
a2 = np.asarray(a)#浅拷贝
a[0,0]=1000###a1不变;a2改变
#生成固定范围数组
np.linspace(0,100,10)#等差数组,指定差值
np.arange(10,50,2)#等差数组,指定步长
np.logspace(0,2,3)#10的次方

(2) 正态分布

import numpy as np
import matplotlib.pyplot as plt
#生成正太分布
x1 = np.random.normal(1.75,1,1000)
plt.figure(figsize=(20,8),dpi=100)
plt.hist(x1,100)
plt.show()

(3) 均匀分布

import numpy as np
import matplotlib.pyplot as plt
#生成正太分布
x1 = np.random.uniform(-1,1,1000)
plt.figure(figsize=(20,8),dpi=100)
plt.hist(x2,100)
plt.show()
  1. 数组的索引、切片
    对象[:,:] 先行后列

  2. 数组的形状修改
    (1)reshape 展成一行,重新排列
    (2)resize
    (3)T 转置

  3. 数组的类型修改

ndarray.astype(type)
ndarray.tostring()

  1. 数组的去重

np.unique()

四、数组的运算

  1. 逻辑运算
    大于小于和赋值。
    大于号可以直接判断数组里的值,赋值在判断结果说赋值
#生成10名同学,5门功课的数据
score=np.random.randint(40,100,(10,5))
#取出最后4名同学的成绩,
用于逻辑判断
test_score = score[6:,0:5]
#逻辑判断,如果成绩大于60就标记为True否则为False
test_score > 60
array([[True,True,True,False,True],
[True,True,True,False,True],
[True,True,False,False,True],
[False,True,True,True,True]])
#B00L赋值,将满足条件的设置为指定的值-布尔索引
test_score[test_score > 60] = 1
test_score
array([1,1,1,59,1],
[1,1,1,59,1],
[1,1,44,44,1],
[59,1,1,1,1]])
  1. 通用函数
    np.all, np.any

#判断前两名同学的成绩[0:2,:]是否全及格
np.all(score[0:2,:]>60)
False
#判断前两名同学的成绩[0:2,:]是否有大于90分的
np.any(scoret[0:2,:]>90)
True

  1. 数组与数值运算,对数组中所有值都与数值运算;注意,对列表运算,乘积会复制粘贴
  2. 数组与数组运算
    广播机制:数组在进行矢量化运算时,要求数组的形状是相等的。当形状不相等的数组执行算术运算的时候,就会出现广播机制,该机制会对数组进行扩展,使数组的shape属性值一样,这样,就可以进行矢量化运算了。下面通过一个例子进行说明:
arr1=np.array([[0],[1],[2],[3])
arr1.shape
#(4,1)
arr2 np.array([1,2,3])
arr2.shape
#(3,)
arrl+arr2
#结果是
array([[1,2,3],
[2,3,4],
[3,4,5],
[4,5,6])

广播机制实现了时两个或两个以上数组的运算,即使这些数组的shape不是完全相同的,只需要满足如下任意一个条件即可。

  • 数组的某一维度等长。
  • 其中一个数组的某一维度为1。

广播机制需要扩展维度小的数组,使得它与维度最大的数组的shape值相同,以便使用元素级函数或者运算符进行运算。


原文地址:https://blog.csdn.net/qq_54641174/article/details/142563048

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!