Numpy数组与矩阵(一)

人工智能34

这里写目录标题

Numpy数组与矩阵(一)

1 ndarray对象

​ Numpy最重要的的一个特点是N为数组对象ndarray,它是一系列同类型数据的集合,以0 下标为开始对集合中的元素建立索引。

​ ndarray的组成部分有:

  • 一个指向数据(内存或内存映射文件中的一块数据)的指针;
  • 数据类型或dtype,描述在数组中的固定大小的格子;
  • 一个表示数组形状(shape)的元组,表示各维度大小的元组;
  • 一个跨度元组(stride),其中的整数指的是为了前进到当前维度的下一个元素需要"跨过"的字节数。

​ 创建一个ndarray只需要调用Numpy的array函数就可以了,它的语法结构如下所示:

numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0)

​ 以下进行参数说明:

名 称描 述object数组或嵌套的数列dtype数组元素的数据类型,可选copy对象是否需要复制,可选order创建数组的样式,C为行方向,F为列方向,A为任意方向(默认)subok默认返回一个基类类型一致的数组ndmin指定生成数组的最小维度

​ 下面我们给出几个实例:


import numpy as np

a = np.array([1, 2, 3, 4, 5])

data = [[1, 2, 3, 4, 5], [6, 7, 8, 9, 10]]
b = np.array(data)

​ 当我们需要查看数组的维度时,直接调用ndim属性就可以了,具体我们可以使用 变量名.ndim来查看。

2 数据类型

​ NumPy支持的数据类型比Python内置的类型要多很多,其中的不分类型也是对应于Python的内置类型而精心设计的。

名 称描 述bool_布尔数据类型(True或False)int_默认的整数类型(就像C语言中long,int32或int64)intc和C语言中的int一样,一般是int32 或int64intp用于索引的整数类型(一般情况下仍然是int32 或int64)int8字节(-128~127)int16整数(-32768~32767)int32整数(-2147483648~2147483647)int64整数(-9223372036854775808~9223372036854775807)uint8无符号整数(0~255)uint16无符号整数(0~65535)uint32无符号整数(0~4294967295)uint64无符号整数(0~18446744073709551615)float_float64类型的简写float16半精度浮点数,包括:1个符号位,5个指数位,10个尾数位float32单精度浮点数,包括:1个符号位,8个指数位,23个尾数位float64双精度浮点数,包括:1个符号位,11个指数位,52个尾数位complex_complex128类型的简写,也就是128位复数complex64复数,表示双32位浮点数(实数部分和虚数部分)complex128复数,表示双64位浮点数(实数部分和虚数部分)

​ 以下我将会举出几个实例:

import numpy as np
c = np.array([1, 2, 3, 4, 5])
print(c)
c.dtype

Numpy数组与矩阵(一)

​ 运行以上程序,我们知道数组c中各元素的数据类型是int32。

d = np.array([-11.7, 41.55, 32.6, -19.88, 32.11, -9.5])
print(d)
d.dtype

Numpy数组与矩阵(一)

3 数组属性

​ Numpy的数组中比较重要的ndarray对象属性如下表所示。

属 性说 明ndarray.ndim秩,也就是轴的数量或者维度的数量ndarray.shape数组的维度,对于矩阵,n行m列ndarray.size数组元素的总个数,相当于shape中n*m的值ndarray.dtypendarray对象的元素类型ndarray.itemsizendarray对象中每个元素的大小,以字节为单位ndarray.flagsndarray对象的内存信息ndarray.realndarray元素的实部ndarray.imagndarray元素的虚部ndarray.data包含实际数组元素的缓冲区,由于一般通过数组的索引获取元素,所以通常不需要使用这个属性

​ 我们通过实例来说明数组的这些特性。我们首先需要创建数组,然后直接调用数组的这些属性。

a = np.arange(25, dtype = np.float_).reshape(5, 5)
b = np.array([1, 2, 3, 4, 5])
print(a)
print(b)

Numpy数组与矩阵(一)

​ 我们创建了a,b两个不同维度的数组,之后我们调用属性查看这两个数组之间的差别。

print('数组a的属性:')
print(a.ndim)
print(a.shape)
print(a.size)
print(a.dtype)
print(a.itemsize)

Numpy数组与矩阵(一)

​ 以上就是数组a的所有属性显示。

print('数组b的属性:')
print(b.ndim)
print(b.shape)
print(b.size)
print(b.dtype)
print(b.itemsize)

Numpy数组与矩阵(一)

​ 以上就是数组b的所有属性显示。

4 创建数组

​ 以下给出数组创建函数:

函 数描 述array将输入的数据(列表、元组、数组或其他序列类型)转换成ndarrayasarray将输入转换为ndarray,如果已经是ndarray,则不用复制arange直接返回ndarray而不是列表ones,ones_likeones表示生成一个由1组成的数组;ones_like表示返回与指定数组具有相同形状和数据类型的数组,并且数组中的值都是1zeros,zeros_likezeros表示生成一个由1组成的数组;zeros_like表示返回与指定数组具有相同形状和数据类型的数组,并且数组中的值都是0empty,empty_like通过分配新内存来创建新数组,但不要使用1和0之类的来填充数组full,full_like返回与给定数组具有相同形状和类型的数组,并且数组中元素的值是fill_value的值eye,identity创建一个正方形N*N单位矩阵(对角线上的值为1,其余都为0)

4.1 零元素数组

​ 我们创建全部都是由0来填充的数组,要使用zeros函数,下面将会给出具体创建函数以及参数说明。

numpy.zeros(shape, dtype = float, order = 'C')

​ 参数说明如下:

参 数描 述shape数组形状dtype数据类型,可选order'C'用于C的行数组,或者'F'用于FORTRAN的列数组

​ 实例说明:

import numpy as np
a = np.zeros((5,2))
print(a)

Numpy数组与矩阵(一)

4.2 一元素数组

​ 利用== ones函数==来实现全部由1来填充元素的数组,具体语法结构以及参数说明如下述:

numpy.ones(shape, dtype = None, order = 'C')

​ 至于以上提到的参数,和零元素数组中的参数说明相同,在此不再概述。

​ 下面我们将举出实例进行说明:

import numpy as np
b = np.ones((5, 5))
print(b)
print(b.dtype)

Numpy数组与矩阵(一)

4.3 arange函数

​ 在Numpy中,我们还可以通过arange函数来创建数组,并且用arange函数创建出来的是ndarray对象。具体的函数使用以及参数说明如下述:

numpy.arange(start, stop, step, dtype)

​ 参数说明如下:

参 数描 述start是数组的起始值,默认为0stop终止值(且不包含,也就是到这个数或者超过这个数,就停止)step步长,默认情况下为1dtype返回ndarray的数据类型,如果没有提供,就会使用输入数据的类型

​ 实例演示:

import numpy as np
arr1 = np.arange(0, 10, 2)
arr2 = np.arange(10, -10, -4)
arr3 = np.arange(1, 5, 2, dtype = float)
arr4 = np.arange(10)
print('arr1 = ', arr1)
print('arr2 = ', arr2)
print('arr3 = ', arr3)
print('arr4 = ', arr4)

Numpy数组与矩阵(一)

4.4 等差数列数组

​ Numpy中的linspace函数是用来创建一个一维数组,该数组是由一个等差数列构成的。具体语法结构如下所述:

nmupy.linspace(start, stop, num = , endpoint = True, retstep = Fasle, dytpe = None)

​ 具体参数说明如下:

参 数描 述start序列的起始值stop序列的终止值,如果endpoint是True,该值将会包含在数列中num要生成的等步长的样本数量,默认为50endpoint该值为True时,数列中包含stop值;反之,则不包括。默认为Trueretstep如果是True,生成的数组中会显示间距,反之不会显示dtypendarray的数据类型

​ 实例说明:

import numpy as np
a = np.linspace(0, 5, 6)
b = np.linspace(0, 5, 6, endpoint = False)
print("a = ", a)
print("b = ", b)

Numpy数组与矩阵(一)

4.5 等比数列数组

​ Numpy中的logspace函数可以用来创建一个等比数列,语法格式如下:

nmupy.logspace(start, stop, num = , endpoint = True, base = , dtype = None)

​ 参数具体说明如下:

参 数描 述start序列的起始值基于basestartstop序列的终止值j基于basestop,如果endpoint是True,该值将会包含在数列中num要生成的等步长的样本数量,默认为50endpoint该值为True时,数列中包含stop值;反之,则不包括。默认为Truebase对数log的底数dtypendarray的数据类型

​ 具体实例说明:

import numpy as np
a = np.logspace(1, 10, 10 ,base = 2)
print(a)

Numpy数组与矩阵(一)

5 数据索引与切片

​ ndarray对象可以通过索引过着切片进行访问和修改,Numpy切片语法和Python列表切片的方法相同。下面我我将为大家介绍数组的索引与切片。

5.1 索引

​ 我们将会了解如何通过索引和切片来选择元素,以此来获得其中的值。数组的索引总是使用"[]"来索引数组的元素,以便这些元素可以被单独引用,用于不同的用途,下面我们将通过案例来说明如何进行索引操作。

import numpy as np
a = np.random.randn(6)
print("a = ", a)
print("a[2] = ", a[2])
print("a[-1] = ", a[-1])

Numpy数组与矩阵(一)

​ 依据上面的例子,我们可以看到,在一维数组中,我们可以通过中括号指定索引第i个值(从0开始计数)。我们的例子中a[2],输出的是第三个数。

​ 当然,我们也可以从后向前索引, 最后一个元素的索引是-1,像例子中a[-1],输出的就是最后一个数。

print("a[[1,4]] = ", a[[1,4]])

Numpy数组与矩阵(一)

​ 如果我们需要选择多各项,可以在方括号中传递索引数组,就比如我们需要第2个和第5个数字,我们就可以使用a[[1, 4]],来达到获取数组中的两个数据。

​ 当然,我们还可以定义一个二维数组,二维数组被表示成由行和列组成的矩形数组,由两个轴来定义,其中轴0表示行,轴1表示列。我们要是想通过索引来表示一个值,那么我们需要输入这个数字的行、列索引,行索引在前,列索引在后。具体方法是:数组名[行索引,列索引]。

​ 具体实例如下:

import numpy as np
b = np.random.randn(4, 4)
print("b = ", b)
print("b[3, 3] = ", b[3, 3])

Numpy数组与矩阵(一)

5.2 切片

​ 切片在Python中的应用十分重要。切片的定义是在一个数组中,我们通过提取其中的一部分元素来形成一个新的数组。当使用Python列表对数组进行切片时,我们的得到数组是一个副本。为了获取某个数组的一个切片,我们通过以下方式:

arrays_name[start:stop:step]

​ 上述方法表示,从索引start开始到索引stop( 不包含),之间的步长是step。默认情况下,会分别设置为: start = 0stop = 维度的大小step = 1

​ 下面我们通过实例说明:

import numpy as np
a = np.arange(10)
print('a = ', a)
print('a[0:5] =', a[0: 5])
print('a[1:7:2]', a[1:7:2])

Numpy数组与矩阵(一)

​ 对于二维数组,切片也同样适用,不同的是,行和列需要分别定义。示例如下:

import numpy as np
a = np.random.randn(24).reshape(6, 4)
print('a = ')
print(a)
print('获取数组a的第三行数据:')
print(a[2, :])
print('获取数组a的第一列数据:')
print(a[:, 0])

Numpy数组与矩阵(一)

​ 对于二维数组还有很多有趣的操作,感兴趣的话,可以自己动手自我尝试一下。

Original: https://blog.csdn.net/gogo_monster/article/details/123398427
Author: 秋刀鱼的知更鸟
Title: Numpy数组与矩阵(一)



相关阅读

Title: conda安装指定版本TensorFlow

文章目录

*
- 一、系统环境
- 二、安装步骤

一、系统环境

操作系统:Windows7 64位,
Python环境:Python3.7;conda 4.10.3
目标版本:TensorFlow1.14.0

二、安装步骤

预处理:在开始安装之前,建议检查一下环境变量是否配置正常,在Path中查看

D:\anaconda\condabin
D:\anaconda\Scripts
D:\anaconda\Library\bin
D:\anaconda\

如果后面出现"WARNING: pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available"异常,大概率是环境变量问题。
1.如果先前配置过清华等镜像地址,建议首先执行

conda config --remove-key channels

将Anaconda的源恢复为默认
出现报错

CondaKeyError: 'channels': key 'channels' is not in the config file

即为恢复成功。
关于源的配置在"C:\Users\Administrator.condarc"文件中,恢复成功后可以看到:

show_channel_urls: true

2.然后需要配置源

conda config --add channels http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/win-64
conda config --add channels http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/win-64
conda config --add channels http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/win-64
conda config --add channels http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/win-64
conda config --set show_channel_urls yes

注意,这里要配置位http,配置https会出现关于ssl异常的报错
此外,在镜像地址后都添加了/win-64,这是根据清华镜像文件存放位置决定的,清华镜像地址为:https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
Numpy数组与矩阵(一)
如果pip某些包发生"当前平台不存在该文件"异常,可以通过镜像目录查找文件地址
配置完成后,同样可以进入"C:\Users\Administrator.condarc"文件中进行确认

show_channel_urls: true
channels:
  - http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/win-64
  - http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/win-64
  - http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/win-64
  - http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/win-64

如果存在"- default",请进行删除
3.上面两步都是针对镜像源的配置,接下来才是TensorFlow的流程。首先要配置虚拟环境。

conda create -n

如果出现了"CondaHTTPError: HTTP 000 CONNECTION FAILED for url"异常,就是上两步配置错了,就不要继续下面的步骤了。(这里主要考虑镜像地址问题,还有http问题)
4.安装完成后,需要激活虚拟环境,我这里是

activate tensorflow

有些人是"conda activate tensorflow",但我这里会报错,找不到该命令。
然后对TensorFlow进行安装,我这里网络安装没有成功,所以直接下载了TensorFlow1.14.0文件
从镜像源处下载tensorflow并安装,镜像源地址:
https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple/tensorflow/
找到对应自己python版本的文件
Numpy数组与矩阵(一)
注意,这里首先是找TensorFlow版本,即1.14.0,然后是python版本号,对应cp37,如果是python3.5就是cp35;最后是平台,即win_amd64
下载完成后,在激活的虚拟环境中执行

pip install D:\tensorflow-1.14.0-cp37-cp37m-win_amd64.whl

Numpy数组与矩阵(一)
安装成功!!!

Original: https://blog.csdn.net/weixin_48289706/article/details/124981481
Author: finallhz
Title: conda安装指定版本TensorFlow

相关文章
搭建智能语音助手思路整理 人工智能

搭建智能语音助手思路整理

搭建一个智能语音助手可以大致分为一下几个模块 唤醒模块 录音模块 语音转文字 对话机器人 文字转语音 播放模块 主体控制模块 待选方案 snowboy 预选方案 Respeaker USB Mic A...
手机在线提取视频中的音频方法 人工智能

手机在线提取视频中的音频方法

随着互联网的普及大家使用率越来越高,在观看视频的期间,如果遇到视频中喜欢的伴奏或者背景音乐,在这时候用户往往希望把这些音频提取出来成为一个独立的音频。下面这篇文章就给大家介绍一种快速容易操作的提取音频...
如何查看GPU的计算能力? 人工智能

如何查看GPU的计算能力?

如何查看GPU的计算能力 一、计算能力是GPU的固有属性 二、常见的GPU计算能力 一、计算能力是GPU的固有属性 GPU的计算能力是不同型号的GPU的固有属性,和cuda版本无关。 想要知道GPU计...
Linux安装虚拟环境那些事 人工智能

Linux安装虚拟环境那些事

1. conda与pip安装的区别 2.pytorch、tensorflow安装GPU版本,需安装对应的cuda、cudnn版本才能用 3.复现一个项目,尽量所有的环境要求都与原作者一致,这样就可以尽...