numpy 学习笔记

1.简介

Numpy(Numerical Python)是一个开源的Python科学计算库,用于快速处理任意维度的数组。

Numpy支持常见的数组和矩阵操作。对于同样的数值计算任务,使用Numpy比直接使用Python要简洁的多。

Numpy使用ndarray对象来处理多维数组,该对象是一个快速而灵活的大数据容器。Numpy专门针对ndarray的操作和运算进行了设计,所以数组的存储效率和输入输出性能远优于Python中的嵌套列表,数组越大,Numpy的优势就越明显。

Numpy底层使用C语言编写,内部解除了GIL(全局解释器锁),其对数组的操作速度不受Python解释器的限制,效率远高于纯Python代码

2. numpy 的基本使用

01 np.array() -- 创建ndarray n维数组

import numpy as np

score = np.array([[80, 89, 86, 67, 79],
[78, 97, 89, 67, 81],
[90, 94, 78, 67, 74],
[91, 91, 90, 67, 69],
[76, 87, 75, 67, 86],
[70, 79, 84, 67, 84],
[94, 92, 93, 67, 64],
[86, 85, 83, 67, 80]])
print(score)
print(type(score))

ndarray中所有元素的类型都是相同的, python中list的元素类型是任意的。

02 ndarray与Python原生list运算效率对比

import random
import time
import numpy as np
a = []
for i in range(100000000):
    a.append(random.random())
    
t1 = time.time()
sum1=sum(a)
t2=time.time()

b=np.array(a)
t4=time.time()
sum3=np.sum(b)
t5=time.time()

print(t2-t1, t5-t4)        # 机器学习的最大特点就是大量的数据运算

03 ndarray的属性 & 类型

# ndarray的属性 -- 
# ndarray.shape:  数组维度的元组,  
# ndarray.size:   数组中的元素数量, 
# ndarray.dtype:  数组元素的类型   -- np.int64/np.int32/np.float64/np.float32/np.string_/np.unicode_/np.bool ...
# ndarray.ndim:   数组维数
# ndarray.itemsize:一个数组元素的长度(字节)

a = np.array([[1,2,3],[4,5,6]])
print(a.shape)
print(a.size)
print(a.dtype)
print(a.ndim)
print(a.itemsize)

b = np.array([[[1,2,3],[4,5,6]],[[1,2,3],[4,5,6]]])
print("b --", b.shape, b.size, b.dtype, b.ndim, b.itemsize)

arr = np.array(['python', 'tensorflow', 'scikit-learn', 'numpy'], dtype = np.unicode_)
print(arr)               # 若不指定,整数默认int64,小数默认float64

 

04 生成0和1的数组 -- zeros(shape[, dtype, order]), ones(shape[, dtype, order])

05 从现有数组生成 -- array & asarray & copy

a = np.array([[1,2,3],[4,5,6]])
a1 = np.array(a)          # array: 从现有的数组当中创建一个新的数组
a2 = np.asarray(a)       # asarray: 内存索引,并没有真正的创建一个新的
a3 = np.copy(a)          # copy: 深拷贝,不会随着a改变而改变
a

06 生成固定范围的数组 -- linspace (start, stop, num, endpoint, retstep, dtype)

 

07 生成随机数组 -- np.random 均匀分布 & 正态分布

import numpy as ny
import matplotlib.pyplot as plt
%matplotlib inline

# 准备数据
a = np.random.uniform(low=-1, high=1, size=10000000)

# 创建画布,绘制直方图, 显示图像
plt.figure(figsize=(10, 5), dpi=80)
plt.hist(a, 1000)
plt.show()

 

08 ndarrary的基本操作 

案例:随机生成3只股票2周的交易日涨幅数据

# 创建符合正态分布的8只股票10天的涨跌幅数据
stock_chang = np.random.normal(0, 1, (3, 10))
stock_chang

 

09 ndarray 运算

10 数组间运算

11 合并、分割 -- concatenate/hstack/vstack ; split

12 IO操作与数据处理 -- genfromtxt (了解,推荐pandas)

 

拓展:

1. 正态分布

正态分布是一种概率分布。正态分布是具有两个参数μ和σ的连续型随机变量的分布,第一参数μ是服从正态分布的随机变量的均值,第二个参数σ是此随机变量的方差,所以正态分布记作N(μ,σ )

2. 矩阵

矩阵,英文matrix,和array的区别矩阵必须是2维的,但是array可以是多维的。

矩阵乘法运算:    形状改变;     运算规则

 

总结

 

--- END ---

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值