深度学习基础之numpy,小白轻松入门numpy

举报
香菜聊游戏 发表于 2021/09/02 11:09:29 2021/09/02
【摘要】 1、numpy 的安装 pip install numpy2、快速入门 2.1 数据类型 用过C语言的基本上都知道是哪几个类型,毕竟python是c 实现的总结一下:u 表示无符号,有符号则没有,中间表示类型类型,最后一个是表示的字节数 2.2 最重要的对象Ndarray 对象 Ndarray 可以理解为Java里面List 的实现,封装了更好的接口和api。调试看下结构 2.3 副本和视图...

1、numpy 的安装

pip install numpy

2、快速入门

2.1 数据类型

用过C语言的基本上都知道是哪几个类型,毕竟python是c 实现的

0.png

总结一下:u 表示无符号,有符号则没有,中间表示类型类型,最后一个是表示的字节数

2.2 最重要的对象Ndarray 对象

Ndarray 可以理解为Java里面List 的实现,封装了更好的接口和api。

0 (1).png


调试看下结构

0 (2).png

2.3 副本和视图

副本是一个数据的完整的拷贝,如果我们对副本进行修改,它不会影响到原始数据,物理内存不在同一位置。

视图是数据的一个别称或引用,通过该别称或引用亦便可访问、操作原有数据,但原有数据不会产生拷贝。如果我们对视图进行修改,它会影响到原始数据,物理内存在同一位置。

视图一般发生在:

  • 1、numpy 的切片操作返回原数据的视图。

  • 2、调用 ndarray 的 view() 函数产生一个视图。

副本一般发生在:

  • Python 序列的切片操作,调用deepCopy()函数。

  • 调用 ndarray 的 copy() 函数产生一个副本。


3、numpy 常用操作

1.创建 ndarray

import numpy as np
#将列表和 元组转换为ndarray
x = [1,2,3]
a = np.asarray(x)  
print (a)

y = (1,2,3)
b = np.asarray(y)  
print (b)
  1. 遍历ndarray

    NumPy 迭代器对象 numpy.nditer( nditer = nd  iterator) 提供了一种灵活访问一个或者多个数组元素的方式

import numpy as np

a = np.arange(6).reshape(2,3)
print ('原始数组是:')
print (a)
print ('\n')
print ('迭代输出元素:')
for x in np.nditer(a):
   print (x, end=", " )
print ('\n')

nditer 的几个参数

order='F' :'C' -- 按行,'F' -- 按列,'A' -- 原顺序,'k' -- 元素在内存中的出现顺序。

op_flags:nditer 将视待迭代遍历的数组为只读对象(read-only),为了在遍历数组的同时,实现对数组元素值得修改,必须指定 read-write 或者 write-only 的模式。

import numpy as np

a = np.arange(6).reshape(2, 3)
print('原始数组是:')
print(a)
print('\n')
print('迭代输出元素:')
for x in np.nditer(a,order="F",op_flags=['readwrite']):
  print(x, end=", ")
  x[...]= x * 2
print('\n 修改后的元素')
print(a)
print('\n')

输出结果

原始数组是:
[[0 1 2]
[3 4 5]]

迭代输出元素:
0, 3, 1, 4, 2, 5,

修改后的元素
[[ 0 2 4]
[ 6 8 10]]

3.Numpy 数组操作

修改数组形状

0 (3).png

翻转数组

numpy.transpose 函数用于对换数组的维度 连接数组

0 (3).png

分割数组

数组元素的添加与删除

numpy.append 函数在数组的末尾添加值

4、常用函数

NumPy 提供了标准的三角函数:sin()、cos()、tan()。

NumPy 算术函数包含简单的加减乘除: add()subtract()multiply()divide()

统计函数

numpy.amin() 和 numpy.amax()

numpy.ptp()函数计算数组中元素最大值与最小值的差(最大值 - 最小值)。

numpy.median() 函数用于计算数组 a 中元素的中位数(中值)

numpy.mean() 函数返回数组中元素的算术平均值。如果提供了轴,则沿其计算。

操作函数

numpy.sort() 函数返回输入数组的排序副本

numpy.argsort() 函数返回的是数组值从小到大的索引值

numpy.lexsort() 用于对多个序列进行排序。把它想象成对电子表格进行排序,每一列代表一个序列,排序时优先照顾靠后的列

#!/usr/bin/env python
# encoding: utf-8


"""
#Author: 香菜
@time: 2021/8/30 0030 下午 10:00
"""

import numpy as np

a = np.arange(6).reshape(2, 3)
print('原始数组是:')
print(a)
# 最小值,可以指定轴
min = np.amin(a)
print("最小值 :" + str(min))
# 最大值与最小值的差
gap = np.ptp(a)
print("最大差 :" + str(gap))
mid = np.median(a)
print("中位数 :" +str(mid))

mean = np.mean(a)
print("平均值 :" +str(mean))

print(np.argsort(a))

5、ndarray和 list的区别

数组元素要求是相同类型,而列表的元素可以是不同类型。

ndarray占用的内存要比列表少

  • 数组底层使用C程序编写,运算速度快。

  • 数组底层使用C中数组的存储方式(紧凑存储),节省内存空间。

6、总结

numpy 似乎不难,最重要的数据结构就是ndarray ,然后np 提供了一些列的函数操作

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。