NumPy使用教程(一)

NumPy是多维数组计算框架,本文是NumPy使用教程第一篇教程,主要介绍NumPy基本使用,内容包括:多维数组对象ndarray、创建ndarray对象、数组数据类型、数组运算、一维数组切片与索引、二维数组切片与索引、布尔索引、整数数组索引、数组转置、数组导入导出等!
摘要由CSDN通过智能技术生成

NumPy使用教程一
NumPy使用教程(一)
来自http://www.tpleina.com/2019/05/2953351469.html

NumPy介绍

NumPy是Python数值运算最为重要的基础包,提供多维数组运算(数组计算框架),为Python其他科学运算库提供底层支持

NumPy库能够对全量数组进行复杂运算,而不需要写Python循环,本身使用C语言实现,NumPy数组对象在内存使用更少、计算性能更强,远高出pyhton内置类型和方法

文章中所有代码示例均在jupyter notebook执行

NumPy 与 Python性能比较

import numpy as np
# numpy 数组对象
arr = np.arange(1000000)
# python内置list类型
lis = list(range(1000000))
# 对arr、lis 每个元素执行+1操作,并执行10次
%time for x in range(10): arr = arr + 1
%time for x in range(10): lis = [x+1 for x in lis]

输出

NumPy: Wall time: 25.9 ms
Python: Wall time: 1.04 s

多维数组对象ndarray使用

NumPy核心对象ndarray,多维数组对象

NumPy数组计算框架核心概念ndarray,即多维数组对象,所有数组操作都离不开ndarray

ndarray是多维数组对象,一个多维数组数据集,且数组每个元素的数据类型必须相同

ndarray基本属性:

  • size 数组长度
  • shape 表示数组维度
  • dtype 描述数组的数据类型
  • ndim 表示数组维度

ndarry一大特点是以标量的方式对数组运算

import numpy as np
arr = np.random.randn(4,3)
print (arr)
print (arr * 10)
print (arr + arr)

输出

[[ 0.98485327 -0.89302292 -1.06824246]
 [-0.20116335 -1.22786453 -1.79337553]
 [ 0.34246443 -0.24140177  0.90403802]
 [-1.23069907 -0.94928253  0.2704078 ]]
[[  9.84853265  -8.93022919 -10.68242463]
 [ -2.01163345 -12.27864526 -17.93375527]
 [  3.42464425  -2.41401771   9.04038015]
 [-12.30699073  -9.49282531   2.70407802]]
[[ 1.96970653 -1.78604584 -2.13648493]
 [-0.40232669 -2.45572905 -3.58675105]
 [ 0.68492885 -0.48280354  1.80807603]
 [-2.46139815 -1.89856506  0.5408156 ]]

创建ndarray对象

  • np.array 最简单方式,接收任何序列对象(Python列表、元组以及numpy数组等),生成一个新的ndarray对象
import numpy as np
# 根据python list生成
arr1 = np.array([1,2,3,4,5,6])
arr3 = np.array([list(range(5)), list(range(5))])
# 根据ndarray生成
arr2 = np.array(arr1)
print(arr2 is arr1)
  • np.zeros 生成全零数组,若创建高维数组,需要传入元组参数
import numpy as np
# 一维
np.zeros(5)
# 二维
np.zeros((3,4))
# 三维
np.zeros((3,2,2))
  • np.zeros_like 根据所给定的ndarray对象生成对应的全零数组
import numpy as np
arr = np.array([list(range(5)), list(range(5))])
print(arr)
print(np.zeros_like(arr))

输出

[[0 1 2 3 4]
 [0 1 2 3 4]]
[[0 0 0 0 0]
 [0 0 0 0 0]]
  • np.ones 生成全一数组,若创建高维数组,需要传入元组参数
import numpy as np
# 一维
np.ones(5)
# 二维
np.ones((3,4))
# 三维
np.ones((3,2,2))
  • np.ones_like 根据所给定的ndarray对象生成对应的全一数组
import numpy as np
arr = np.array([list(range(5)), list(range(5))])
print(arr)
print(np.ones_like(arr))
# 输出
[[0 1 2 3 4]
 [0 1 2 3 4]]
[[1 1 1 1 1]
 [1 1 1 1 1]]
  • np.empty 生成没有初始值的数组,若创建高维数组,需要传入元组参数
  • np.empty_like 根据所给定的ndarray对象生成没有初始值的数组
  • np.full 创建一个由常数填充的数组,第一个参数是数组,第二个参数是数组中填充的常数
  • np.full_like 同上
  • np.eyenp.identity生成NxN单位矩阵(左对角线是1,其他元素是0)
  • np.arange range的数组版,生成一维数组,与array方法类似,若输入ndarry对象,则生成新的ndarry对象,只是引用

数组数据类型

  1. 可以在创建数组的时候,指定数据类型
  2. 可改变已有数组的数据类型,通过astype()方法,生成新的数组

NumPy支持的数据类型如下:

类型 类型代码 描述
int8,uint8 i1,u1 有符号和无符号的8位整数
int16,uint16 i2,u2 有符号和无符号的16位整数
int32,uint32 i4,u4 有符号和无符号的32位整数
int64,uint64 i8,u8 有符号和无符号的64位整数
float16 f2 半精度浮点数
float32 f4,f 标准单精度浮点数,兼容C语言float
float64 f8,d 标准双精度浮点数,兼容C语言double和Python float
float128 f16,g 浮点数扩展
bool_ ?</
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值