numpy数组的创建和属性转换

13825820-2e4445f921769f56.jpg

一、数据与numpy数组的创建

1、 python数组的创建

python中的固定类型数组:

python中提供了几种将数组存储在有效的、固定类型的数据缓存中的选项。内置的数组(array)模块可以创建按统一类型的密集数组:

13825820-7d65f9fafb7bd055.jpg

这里的“i”表示的是一个数据类型码,表示数据为整型。

更实用的是ndarray数组对象,Python的数组对象提供了数组类型的有效存储,而Numpy为该数据加上了高效的操作。稍后将会介绍这些操作,这里先集中展示创建Numpy数组的方法:

2、 Numpy数组的创建

从python列表创建数组:

13825820-d5186f3f8ea19271.jpg
  • 创建整数型
13825820-24c07abdbbbc5fe6.jpg
  • 指定类型创建数组
13825820-ad0af42c180b10a0.jpg
  • 根据内容,自动创建对应数据类型
13825820-07ae374a5e87a69c.jpg

创建np数组时需要强调元素类型的一致。如果类型不同则会自动向上转换。

2.1dtype参数进行强制类型转换或类型指定

13825820-3725bbe3b9c55eae.jpg

2.2生成嵌套数组

手动创建嵌套数组

13825820-df39af7819677c98.jpg

使用公式嵌套数组

13825820-50534bc300a59e44.jpg

3、11中创建ndarray数组的高效创建方法

面对大型数组,用Numpy数组时,用Numpy内置方法从头创建数组时一种高效的方法,以下是几个示例:

3.1 创建一个元素都为0 的n * m 的多(2)维数组

np.zeros((维度,行数,列数),dtype = "指定类型(float32/int32/str)")

  • 创建一个10列元素类型为浮点型的数组,在仅指定一个参数时,创建的表示一行,指定列数,默认为浮点型。
13825820-66898331f443264c.jpg
  • 创建一个3行4列元素类型为整数型的数组, 仅指定两个参数时,表示的是行数和列数。
13825820-9fd3ea3a1d30eb26.jpg
  • 创建一个2维3行4列元素类型为整数型的数组, 指定三个参数时,表示的是维度,行数和列数。
13825820-3510cee705fc8554.jpg

3.2 创建一个元素都为1的n*m的多(3)维数组

np.ones((维度,行数,列数),dtype = "指定类型(float32/int32/str)")

13825820-20f13be24dcaec64.jpg
  • 传维度参数的时候,放在一个容器中,可以是元组,也可以是列表
13825820-95b9b34171a8ca26.jpg

3.3创建一个的整数型数组,数组的值是一个线性序列。

np.arange(start[真包含], end[假包含], step)

  • 创建一个从0开始30结束,步长为3的数组
13825820-052078de419588e4.jpg
  • 创建一个从1开始30结束的数组
13825820-044af3c71438d035.jpg
  • 创建一个长度到10结束的数组
13825820-81687050227cd78a.jpg

3.4创建一个50个元素的数组,这50个数均匀地分配到1~10

np.linspace(start, stop, 平均分成的分数)

13825820-7fed3a86f926439d.jpg

3.5 创建一个在0-1之间随机分布的由随机数组成的数组

np.random.random((维度,行数, 列数))

  • 创建一个3列的随机数数组
13825820-a71af80cbe9b50cd.jpg
  • 创建一个3行3列的随机数数组
13825820-f54e965f2dcf975e.jpg
  • 创建一个3维3行3列的数组
13825820-1185ffac5082d964.jpg

其他生成随机数的方法

  • 创建一个服从标准正态分布的数组

np.random.randn(维度,行数,列数)

  • 创建均匀分布[0,1)上的数组

np.random.rand(维度,行数,列数)

3.6 创建一个正态分布的随机数数组

np.random.normal(均值, 方差, (维度,行数, 列数))

  • 创建一个均值为0,方差为1,3维3行3列的随机数数组
13825820-2e97a8597d5ec24a.jpg

3.7创建一个服从设置区间的随机数整数型的数组

np.random.randint(start, stop, (维度,行数, 列数))

  • 创建从0开始10结束,3维3行3列的整数型数组
13825820-b00e28cb33c8d6fe.jpg

3.8 创建一个对角线元素都为1,其他位置元素都为0的单位矩阵

np.eye(行数,列数,dype=’元素类型(默认为浮点型)’)

  • 创建一个4列的单位矩阵,如果仅指定一个参数,默认为列数,行数会默认为是列数。
13825820-1e4f1505814da1af.jpg
  • 创建一个4行3列的单位矩阵
13825820-b93d508dbf79f8a3.jpg

3.9创建一个由m*n维未初始化的数组,数组的值是内存空间中的任意值

np.empty(n)

13825820-ad1000e85341157b.jpg

3.10 创建一个指定元素的对角矩阵

Np.diag(n)

  • 创建对角元素为1,2,3,4的对角矩阵
13825820-f0181e18f1cc22ca.jpg

3.11创建一个指定行列,和指定内容的数组

Np.full((维度,行数,列数),指定值(可以是一个数组,也可以是一个列表或嵌套列表))

  • 创建一个3维3行5列,值全部为3.14的数组
13825820-de5e2ed6ba7d5b04.jpg

二、数组的基本操作

1、查看Nddaray属性

数组的属性:

  • 数组的维度:ndim
  • 数组每个维度的大小:shape
  • 数组的总大小(元素的总个数):size
  • 数组类型:dtype
  • 数组元素字节大小:itemsize;nbytes

现在我们定义三个数组, 一维数组, 二维数组, 三维数组,为了确保大家都能生成一样的数组, 我们先设置随机数种子。

Np.random.seed可以使生成随机数时可以生成一样的随机数

13825820-78d5f4f18d1989d6.jpg

1.1查看数组的形状

13825820-5235ba1597a7ebe3.jpg

1.2查看数组的维度

13825820-b801b1cd77dcfa14.jpg

1.3 查看数组的总大小

13825820-7bc14b6528d07c4c.jpg

1.4查看数组的数据类型

13825820-126d45a64b9c0700.jpg
image

1.5查看数组中每个元素的大小(所占用内存的大小)

13825820-7a3ddd4b5e9e24ae.jpg
image

1.6查看数组的总大小(占用内存的大小)

13825820-1f2602923c024cc3.jpg
image

1.7对数组进行转置

13825820-ce9969024b26fd33.jpg
image

1.8其他查看属性的方法

Ndarray.flags

有关数组的内存布局的信息。

Ndarray.shape

数组维数组。

Ndarray.ndim

数组维数,在Python世界中,维度的数量被称为rank。

Ndarray.data

Python缓冲区对象指向数组的数据的开始。

Ndarray.size

数组中的元素总个数。

Ndarray.itemsize

一个数组元素的长度(以字节为单位)。

Ndarray.dtype

数组元素的数据类型。

Ndarray.T

数组的转置。

2.Numpy数据类型以及类型转换

Numpy中的数组比 Python 原生中的数组(只支持整数类型与浮点类型)强大的一点就是它支持更多的数据类型。

2.1 numpy基本数据类型

Numpy常见的基本数据类型如下:

数据类型

描述

bool_

布尔(True或False),存储为一个字节

int_

默认整数类型(与C long相同;通常为int64或int32)

intc

与C int(通常为int32或int64)相同

intp

用于索引的整数(与C ssize_t相同;通常为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

半精度浮点:符号位,5位指数,10位尾数

float32

单精度浮点:符号位,8位指数,23位尾数

float64

双精度浮点:符号位,11位指数,52位尾数

complex_

complex128的简写。

complex64

复数,由两个32位浮点(实数和虚数分量)

complex128

复数,由两个64位浮点(实数和虚数分量)

虽然有这么多的数据类型,但是我们平时用的时候仅需要知道(int,bool,float,complex,str)这几种就可以了,暂时不需要去记这么多。

这些类型都可以在创建ndarray的时候通过dtype来制定

13825820-54353251209191c0.jpg
image

2.2数据类型的转换

数组直接数据类型的转换首选是.astype()方法,或者使用类型本身作为函数。

13825820-ebd4ddb575653010.jpg
image
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值