我的编程空间,编程开发者的网络收藏夹
学习永远不晚

NumPy学习笔记(一)

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

NumPy学习笔记(一)

# NumPy
### 安装
- 通过安装Anaconda安装NumPy,一个开源的Python发行版本,其包含了conda、Python等180多个科学包及其依赖项,包含了大量的科学计算相关的包,其中就包括NumPy
- 通过pip安装,
- 在windows中,控制台中输入命令安装
```python
>pip install numpy
```
- 在ubuntu中,控制台输入命令安装
```python
XXX:~/Desktop$sudo apt-get install python-numpy python-scipy python-matplotlib ipython ipython-notebook python-pandas python-sympy python-nose
```
- 安装验证,进入python交互终端,输入命令,没有报错则安装成功
```python
>python
>>> import numpy as np
```
### numpy中最重要的对象---ndarray:
**Ndarray对象指的是用于存放同类型元素的多维数据,它是一个多维容器,N代表着它的维度**


#### 创建ndarray对象
- 通过array方法创建
- 参数说明
- 必选参数
- object 数组或嵌套的数列
- 可选参数
- dtype 数组元素的数据类型
- copy 对象是否需要复制
- order 创建数组的样式,C为行方向,F为列方向,A为任意方向(默认)
- subok 默认返回一个与基类类型一致的数组
- ndmin 指定生成数组的最小维度
- demo
```python
>>> from numpy as np
>>> x = np.array([[1, 2, 3], [4, 5, 6]],dtype=np.int32,copy=True,order=None,subok=False,ndmin=0)
>>> type(x) # 查看x类型
<type 'numpy.ndarray'>
>>> x.shape # 查看ndarray对象的维度
(2, 3)
>>> x.dtype # 查看x里的数据类型
dtype('int32')
```
- 通过zeros/ones方法创建(创建指定大小的数组,数组元素以 0/1 来填充,)
- 参数说明
- 必要参数
- shape 数组形状
- 可选参数
- dtype 数据类型
- order 'C' 用于 C 的行数组,或者 'F' 用于 FORTRAN 的列数组
- demo
```python
>>> np.zeros(5)
array([0., 0., 0., 0., 0.])
>>> np.zeros((3,3))
array([[0., 0., 0.],
[0., 0., 0.],
[0., 0., 0.]])
```
- 通过empty方法创建(创建一个指定形状(shape)、数据类型(dtype)且未初始化的数组:)
- 参数说明
- 必要参数
- shape 数组形状
- 可选参数
- dtype 数据类型
- 有"C"和"F"两个选项,分别代表,行优先和列优先,在计算机内存中的存储元素的顺序
- demo
```python
>>> x = np.empty((3,2),dtype=int)
>>> x
array([[0, 0],
[0, 0],
[0, 0]])
>>> y = np.empty([3,2],dtype=int)
>>> y
array([[0, 0],
[0, 0],
[0, 0]])
```
- 其他方法:
- 通过full方法创建(创建一个填充给定值的n * n数组)
- demo
```python
>>> np.full([3,3],3)
array([[3, 3, 3],
[3, 3, 3],
[3, 3, 3]])
```
- 通过eye方法创建(创建一个对角线是1,其余是0的多维数组)
- demo
```python
>>> np.eye(3)
array([[1., 0., 0.],
[0., 1., 0.],
[0., 0., 1.]])
>>> np.eye(1)
array([[1.]])
```
- 通过linspace方法创建(创建一个在指定的时间间隔内返回均匀间隔的数字的数组)
- demo
```python
>>> np.linspace(0,8.8,num=5)
array([0. , 2.2, 4.4, 6.6, 8.8])
```
- 通过random方法创建(创建一个填充0到1之间随机值的数组)
- demo
```python
>>> np.random.random([3,3])
array([[0.17647511, 0.79086009, 0.26275058],
[0.83484953, 0.6386956 , 0.53928901],
[0.26020885, 0.58836421, 0.39308341]])
```
// TODO :补充
#### NumPy支持的数据类型(ndarray对象支持的数据类型)
名称 | 描述
---|---
bool_ | 布尔型数据类型(True 或者 False)
int_ | 默认的整数类型(类似于 C 语言中的 long,int32 或 int64)
intc | 与 C 的 int 类型一样,一般是 int32 或 int 64
intp | 用于索引的整数类型(类似于 C 的 ssize_t,一般情况下仍然是 int32 或 int64)
int8 | 字节(-128 to 127)
int16 | 整数(-32768 to 32767)
int32 | 整数(-2147483648 to 2147483647)
int64 | 整数(-9223372036854775808 to 9223372036854775807)
uint8 | 无符号整数(0 to 255)
uint16 | 无符号整数(0 to 65535)
uint32 | 无符号整数(0 to 4294967295)
uint64 | 无符号整数(0 to 18446744073709551615)
float_ | float64 类型的简写
float16 | 半精度浮点数,包括:1 个符号位,5 个指数位,10 个尾数位
float32 | 单精度浮点数,包括:1 个符号位,8 个指数位,23 个尾数位
float64 | 双精度浮点数,包括:1 个符号位,11 个指数位,52 个尾数位
complex_ | complex128 类型的简写,即 128 位复数
complex64 | 复数,表示双 32 位浮点数(实数部分和虚数部分)
complex128 | 复数,表示双 64 位浮点数(实数部分和虚数部分)


#### ndarray对象的属性
属性 | 说明
---|---
ndarray.ndim | 秩,即轴的数量或维度的数量
ndarray.shape | 数组的维度,对于矩阵,n 行 m 列
ndarray.size | 数组元素的总个数,相当于 .shape 中 n*m 的值
ndarray.dtype | ndarray 对象的元素类型
ndarray.itemsize| ndarray 对象中每个元素的大小,以字节为单位
ndarray.flags | ndarray 对象的内存信息
ndarray.real | ndarray元素的实部
ndarray.imag | ndarray 元素的虚部
ndarray.data | 包含实际数组元素的缓冲区,由于一般通过数组的索引获取元素,所以通常不需要使用这个属性。
demo
```python
>>> a = np.full((3,3),3)
>>> a
array([[3, 3, 3],
[3, 3, 3],
[3, 3, 3]])
>>> a.ndim
2
>>> a.shape
(3, 3)
>>> a.size
9
>>> a.dtype
dtype('int32')
>>> a.itemsize
4
>>> a.flags
C_CONTIGUOUS : True
F_CONTIGUOUS : False
OWNDATA : True
WRITEABLE : True
ALIGNED : True
WRITEBACKIFCOPY : False
UPDATEIFCOPY : False
>>> a.real
array([[3, 3, 3],
[3, 3, 3],
[3, 3, 3]])
>>> a.imag
array([[0, 0, 0],
[0, 0, 0],
[0, 0, 0]])
>>> a.data
<memory at 0x0FE0E990>

```
#### ndarray对象的的基本操作
- 加减乘除四则运算
```python
>>> a = np.full((3,3),3)
>>> a
array([[3, 3, 3],
[3, 3, 3],
[3, 3, 3]])
>>> a+1
array([[4, 4, 4],
[4, 4, 4],
[4, 4, 4]])
>>> a-2
array([[1, 1, 1],
[1, 1, 1],
[1, 1, 1]])
>>> a*5
array([[15, 15, 15],
[15, 15, 15],
[15, 15, 15]])
>>> a/3
array([[1., 1., 1.],
[1., 1., 1.],
[1., 1., 1.]])
>>> a
array([[3, 3, 3],
[3, 3, 3],
[3, 3, 3]])

>>> b = np.full((3,3),3)
>>> b
array([[3, 3, 3],
[3, 3, 3],
[3, 3, 3]])
>>> a+b
array([[6, 6, 6],
[6, 6, 6],
[6, 6, 6]])
>>> a += b
>>> a
array([[6, 6, 6],
[6, 6, 6],
[6, 6, 6]])

```
**注意:虽然可以对两个ndarray对象进行操作,但是如果没有赋值,不会改变原来的ndarray对象**

##### 当对两个ndarray对象数据类型精度不一样进行操作时,结果的精度为更精确的那个数据类型
```python
>>> a = np.array([[0.1,0.2,0.3],[0.3,0.2,0.1]],dtype=np.float32)
>>> a
array([[0.1, 0.2, 0.3],
[0.3, 0.2, 0.1]], dtype=float32)
>>> b = np.array([[0.3,0.2,0.1],[0.1,0.2,0.3]],dtype=np.float64)
>>> b
array([[0.3, 0.2, 0.1],
[0.1, 0.2, 0.3]])
>>> c = a+b
>>> c
array([[0.4 , 0.4 , 0.40000001],
[0.40000001, 0.4 , 0.4 ]])
>>> c.dtype
dtype('float64')

```
- 常用数学函数sum、min、max等
```python
>>> a = np.arange(12).reshape(4,3) # reshape可以设置输出时的维度
>>> a
array([[ 0, 1, 2],
[ 3, 4, 5],
[ 6, 7, 8],
[ 9, 10, 11]])
>>> a.sum()
66
>>> a.sum(axis=0) # axis=0表示求列的相关操作
array([18, 22, 26]) # axis=1表示求行的相关操作
>>> a.sum(axis=1)
array([ 3, 12, 21, 30])
>>> a.min()
0
>>> a.min(axis=0)
array([0, 1, 2])
>>> a.min(axis=1)
array([0, 3, 6, 9])
>>> a.max()
11
>>> a.max(axis=0)
array([ 9, 10, 11])
>>> a.max(axis=1)
array([ 2, 5, 8, 11])
>>> np.sin(a)
array([[ 0. , 0.84147098, 0.90929743],
[ 0.14112001, -0.7568025 , -0.95892427],
[-0.2794155 , 0.6569866 , 0.98935825],
[ 0.41211849, -0.54402111, -0.99999021]])
>>> np.cos(a)
array([[ 1. , 0.54030231, -0.41614684],
[-0.9899925 , -0.65364362, 0.28366219],
[ 0.96017029, 0.75390225, -0.14550003],
[-0.91113026, -0.83907153, 0.0044257 ]])
>>> np.tan(a)
array([[ 0.00000000e+00, 1.55740772e+00, -2.18503986e+00],
[-1.42546543e-01, 1.15782128e+00, -3.38051501e+00],
[-2.91006191e-01, 8.71447983e-01, -6.79971146e+00],
[-4.52315659e-01, 6.48360827e-01, -2.25950846e+02]])
```
- 类似于python中列表的操作
- 索引,一维数组的索引和列表一样,多维数组的索引需要根据维度索引
```python
>>> a = np.arange(12)
>>> a
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11])
>>> a[0]
0
>>> a[11]
11
>>> b = np.arange(12).reshape(2,6)
>>> b[0,0]
0
>>> b[5,5]
>>> b[1,5]
11
```
- 切片,与python中的列表相似,也是左包含右不包含
```python
>>> b[:,5]
array([ 5, 11])
>>> b[1,1:2]
array([7])
>>> b[1,1:5]
array([ 7, 8, 9, 10])
```
**多维数组切片时,一定要注意好维度,根据维度来切片**
- 迭代,与python的列表相似,都可以用for in 来遍历ndarray对象,一维数组遍历和列表一样,多维数组遍历会得到次维的数组
```python
>>> for i in b:
... print(i)
...
[0 1 2 3 4 5]
[ 6 7 8 9 10 11]
```

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

NumPy学习笔记(一)

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

NumPy 学习笔记(一)

NumPy:  1、NumPy 是一个功能强大的第三方库(需要自己安装),主要用于对多维数组执行计算;     它提供了大量的库函数和操作,可以帮助程序员更轻松地进行数值计算  2、可以和另外两个第三方库 SciPy 和 Matplotli
2023-01-31

NumPy学习笔记(一)

# NumPy### 安装- 通过安装Anaconda安装NumPy,一个开源的Python发行版本,其包含了conda、Python等180多个科学包及其依赖项,包含了大量的科学计算相关的包,其中就包括NumPy- 通过pip安装,
2023-01-31

NumPy 学习笔记(四)

NumPy 算术函数:  1、numpy.reciprocal(arr) 返回参数逐个元素的倒数  2、numpy.power(one, two) 将第一个输入数组中的元素作为底数,计算它与第二个输入数组中相应元素的幂,即 one^two 
2023-01-31

NumPy 学习笔记(三)

NumPy 数组操作:  1、修改数组形状    a、numpy.reshape(arr, newshape, order='C') 在不改变数据的条件下修改形状    b、numpy.ndarray.flat 是一个数组元素迭代器    
2023-01-31

numpy学习笔记 - numpy常用函

# -*- coding: utf-8 -*-"""主要记录代码,相关说明采用注释形势,供日常总结、查阅使用,不定时更新。Created on Fri Aug 24 19:57:53 2018@author: Dev""" import n
2023-01-30

MySQL 学习笔记 (一)

1.InnoDB and Online DDLALTER TABLE tbl_name ADD PRIMARY KEY (column), ALGORITHM=INPLACE, LOCK=NONE;https://dev.mysql.com/doc/refma
2016-12-04

第一周Python学习笔记

Python 基本语法:①  Python程序的格式:1.用代码高亮来标识函数丶语句等等 本身的代码高亮并没有实际的意义,只是用来辅助编程人员和阅读人员 更好的识别   2.程序以缩进来标识语句,缩进用来标识代码间的层次关系,缩进的长度也必
2023-01-30

Python第一周 学习笔记(3)

一、数值型1.数据类型分类:int:整数python3的int就是长整型,且没有大小限制,受限于内存区域的大小int(x) 返回一个整数float:浮点数有整数部分和小数部分组成。支持十进制和科学计数法表示。只有双精度型。float(x)
2023-01-31

Python学习笔记一(Python数据

Python数据类型主要包括数字,字符串,列表,元组和字典。字符串,列表,元组和字典都是序列,序列最主要两个特点是索引操作和切片操作,索引操作让我们从序列中抓取一个特定项目,切片操作让我们能够获取序列的一个切片,即一部分序列。1.数字 P
2023-01-31

学习笔记-小甲鱼Python3学习第十一

从列表中获取元素:列表索引值是从0开始的例把'郑十'和'王五'的位置调换一下>>> member['张三', '李四', '郑十', '王五', '赵六', '陈七', '马八', '孙九']>>> member[2]'郑十'>>> mem
2023-01-31

学习笔记-小甲鱼Python3学习第一讲

测试题:0、python 是什么类型的语言?python是一种脚本语言IDLE 是什么?是一种python shell,类似于windows的cmd窗口和linux的shellprint() 的作用是什么?打印到窗口显示 aPython 中
2023-01-31

Python学习笔记整理(一)pytho

Python对象类型说明:python程序可以分解成模块,语句,表达式以及对象。1)、程序由模块构成2)、模块包含语句3)、语句包含表达式4)、表达式建立并处理对象一、使用内置类型除非有内置类型无法提供的特殊对象需要处理,最好总是使用内置对
2023-01-31

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录