【数据分析师_04_Python数据分析基础】004-011_Numpy(安装、生成、运算、变形、合并、拆分、矩阵)

Numpy1 Numpy和 SciPy概述1.1 科学计算是什么1.2 Numpy的历史和发展1.3 Numpy的应用1.4 Pip安装 Numpy、Scipy、Matplotlib、Pandas2 Numpy和 Python List的区别2.1 Python内置的数组结构2.2 Numpy和 List数组的相似处2.3 Numpy和 List数组的不同2.4 测试3 Numpy的常见功能3.0 Help(np.函数名)3.1 Array()3.1.1 List 和 Array创建数组3.1.2 Ndmi
摘要由CSDN通过智能技术生成

Numpy


转载请注明出处 😃!
手动反爬:Numpy(安装、生成、运算、变形、合并、拆分、矩阵)
https://blog.csdn.net/Lyun911/article/details/112250455

注:以下使用 Jupyter Notebook 演示


1 Numpy和 SciPy概述

Numpy环境要求:
系统:Win7/ Win10/ MacOS10.10+
环境:Python3.7+ 或者 Anaconda

1.1 科学计算是什么

科学计算主要是利用计算机的算力进行数据的计算和方程求解,具体包括如下内容:

  • 一个强大的 N维数组对象 ndarray:比如三维数组 x,y,z表示为:[ [2, 2], [3, 3], [4, 4] ],又比如一个电脑的配置cpu,gpu,ram,rom…各种配置排列组合以后形成一个N维数组
  • 广播功能函数:假设有一个 33的矩阵,让其 +5,正常情况下无法直接加,而广播功能可以让 33矩阵中的每一个数字都 +5
  • 整合 C/C++/Fortran 代码的工具
  • 线性代数、傅里叶变换(比如音乐 UI的波浪会根据声音的强弱等转换为音浪视觉)、随机数生成,微积分求解等功能

1.2 Numpy的历史和发展

NumPy(Numerical Python)是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算
NumPy 为开放源代码并且由许多协作者共同维护开发(Pandas的底层核心是 Numpy)

1.3 Numpy的应用

NumPy 通常与 SciPy(Scientific Python)和 Matplotlib(绘图库)一起使用

这种组合广泛用于替代 MatLab,是一个强大的科学计算环境,有助于我们通过 Python 学习数据科学或者机器学习。利用 Python的 PIP包管理器可以方便的安装 Numpy套件,当然也可以利用 Anaconda的套件环境快速安装 Numpy环境

1.4 Pip安装 Numpy、Scipy、Matplotlib、Pandas

打开 CMD运行以下指令:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple numpy scipy matplotlib pandas

2 Numpy和 Python List的区别

2.1 Python内置的数组结构

  • List:列表 [1, 1, 2, 3]
  • Dictionary:字典 {k:v, k:v, k:v}
  • Set:集合 set([1, 1, 2, 3]) == {1, 2, 3}
  • Numpy Array:Numpy阵列

2.2 Numpy和 List数组的相似处

Storing Data:可存储数据
Mutable:数据可更新(turple 元组不可以更改)
Can be indexed:可索引搜索(有编号,比如0对应第1个数字)
Slicing Operation:可分片(如 [1:3] 可以取出第2-3个数据)

2.3 Numpy和 List数组的不同

List 可以存储不同的数据类型对象:[1, 2, ‘Hey’]
Numpy Array存储的都是同类型数据对象:可以放 int,float等数字类型的数据,但不能放 str
NumpyArray是C语言写的,比List操作快10-100倍,适合大数据分析
Operation 快速操作

2.4 测试

加减乘除:

import numpy
a = numpy.array([3, 3, 3, 3])
b = a + 7
c = b / 3
print(f'{a}\n{b}\n{c}')

[3 3 3 3]
[10 10 10 10]
[3.33333333 3.33333333 3.33333333 3.33333333]

性能测试:

import time
import numpy as np

size_of_vec = 10000000

def python_():
	t1 = time.time()
	x = range(size_of_vec)
	y = range(size_of_vec)
	z = []
	for i in range(len(x)):
		z.append(x[i] + y[i])
	return time.time() - t1
ts1 = python_()

def numpy_():
	t2 = time.time()
	x = np.arange(size_of_vec)
	y = np.arange(size_of_vec)
	z = x + y
	return time.time() - t2
ts2 = numpy_()

print(f'Numpy is {str(ts1 - ts2)} seconds faster')
print(f'Numpy is {ts1 / ts2} times than Python')

Numpy is 2.9236440658569336 seconds faster
Numpy is 64.53442344358783 times than Python

一般情况下,Numpy比 Python快50-100倍


3 Numpy的常见功能

3.0 Help(np.函数名)

首先,用 help 函数可以查看使用说明 instruction

import numpy as np

help(np.array)

3.1 Array()

利用 Array() 可以从一个列表或元组创建一个Numpy数组:
在这里插入图片描述
语法:
numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0)

其中:

  • object :是数组或嵌套的数列
  • dtype :是数组元素的数据类型,可选 int或者 float,默认为浮点型
  • copy :是设置是否需要复制,默认需要
  • order :创建数组的样式,c代表行方向,f代表列方向,a代表任意方向

注意:
创建2维矩阵的时候最好要
a = np.array([[99, 99]])
如果没有两个 [[]] 则会变成1维
a = np.array([99, 99])

3.1.1 List 和 Array创建数组

List和 Numpy互换:

import numpy as np

l = [1, 2, 3, 4, 5]
arr = np.array(l)
li = list(arr)

print(arr)
print(type(arr))
print(li)
print(type(li))

在这里插入图片描述
从 List创建 N维数组:

import numpy as np
# 0D Array(标量 Scarlars即 0维数据)
arr0 = np.array(33)
# 1D Array
arr1 = np.array([1, 1, 1])
# 2D Array
arr2 = np.array([[1, 1, 1], [2, 2, 2]])
# 3D Array
arr3 = np.array([[[1, 1, 1], [2, 2, 2]], [[3, 3, 3], [4, 4, 4]]])

print(f'{arr0}\n\n{arr1}\n\n{arr2}\n\n{arr3}')		# 查看数组的样子
print(arr3.ndim)									# 查看数组的维度

在这里插入图片描述

3.1.2 Ndmin 参数

创建高维度的数组(N Dimension - N维)

import numpy as np

arr5 = np.array([5, 5, 5], ndmin = 5)
print(arr5)

在这里插入图片描述

3.1.3 Dtype 参数

import numpy as np

arr = np.array([1, 2, 3], dtype = np.int)
print(arr)

3.2 Arange()

NumPy arange()是基于数值范围的数组创建数组。
它创建具有均匀间隔的值的ndarray实例,并返回对其的引用。
语法结构:
numpy.arange([start, ]stop, [step, ], dtype=None) -> numpy.ndarray
在这里插入图片描述
在这里插入图片描述

3.2.1 Arange() 的一般应用

import numpy as np

# 完整的写法
arr_detail = np.arange(start = 1, stop = 10, step = 3)
print(arr_detail)

# 简单的写法
arr_simple = np.arange(1, 10, 3)
print(arr_simple)

# 取头不取尾
arr_tail = np.arange(1, 10.1, 3)
print(arr_tail)

# step优先级第3,默认为1
arr_tail2 = np.arange(1, 10)
print(arr_tail2)

# start优先级第2,默认为0
arr_start0 = np.arange(10)
print(arr_start0)

# 可以从负数开始
arr_neg = np.arange(-10, 2, 3)
print(arr_neg)

在这里插入图片描述
注:np.arange() 是含头不含尾的,如上 arr_tail 和 arr_tail2
注:np.arange() 只有2个值时,默认这2个参数为 startstop
注:np.arange() 只有1个值时,默认从0开始

3.2.2 Arange() 的进阶应用(-step,slicing,.dtype,.itemsize,float32)

import numpy as np

# 反向step
arr_rev = np.arange(5, 1, -1)
print(arr_rev)

# 使用slicing切片器取前2个数
print(np.arange(1, 10, 3)[:2])
# 使用slice切片器让数组反向排序
print(np.arange(1, 10, 3)[::-1])

# 创建空数组
print(np.arange(2, 2))

# 查看数据类型
x = np.arange(5)
print(type(x))
print(x.dtype)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值