Numpy系统学习(三)创建Ndarray数组对象

目录

1 创建Ndarray数组对象

1.1 从无到有创建数组

1.1.1 使用array()函数

1.1.2 使用empty()函数

1.1.3 使用zeros(),ones(),full()函数

1.1.4 使用arange()函数

1.1.5 使用random.rand()函数

1.1.6 使用random.randint()

1.2 从已有数组创建数组

1.2.1 使用asarray()函数

1.2.2使用frombuffer()函数

1.2.3 使用fromiter()函数

2.关于其他补充说明

2.1 类型转换

2.2 其他生成


1 创建Ndarray数组对象

1.1 从无到有创建数组

1.1.1 使用array()函数

原型:

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

参数说明:

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

例1:测试使用dtype 类型的,已有类型

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

输出

[1. 2. 3. 4. 5.]

此时尽管输入的是整形,但是输出收到dtype影响,都变为了float型

例2:测试使用dtype类型,创建自己的类型

创建一个student类型的数据类型

姓名 ,学号 ,成绩

import numpy as np
student=np.dtype([("name","S20"),("id","i2"),("score","f2")])#利用dtype生成自己的数据类型
a4=np.array([("LiHua","1001","99.5"),("Qodi","1002","85.5")],dtype=student)
print(a4)

输出

[(b'LiHua', 1001, 99.5) (b'Qodi', 1002, 85.5)]

1.1.2 使用empty()函数

作用创建一个指定形状的未初始化的数组,由于未初始化,所以输出是随机值

原型:

numpy.empty(shape, dtype = none, order = 'C')
参数描述
shape数组形状 ,如[3,4] 代表3行4列
dtype数据类型,可选
order有"C"和"F"两个选项,分别代表,行优先和列优先,在计算机内存中的存储元素的顺序。

例1:创建一个4行3列的未初始化的浮点型数组

import numpy as np
a5=np.empty([4,3],dtype="f2")
print(a5)

输出

[[2.712e+03 2.163e+04 6.842e-02]

[2.251e-01 2.620e-01 6.465e-01]

[9.723e-02 3.159e-06 0.000e+00]

[0.000e+00 0.000e+00 1.984e+00]]

1.1.3 使用zeros(),ones(),full()函数

三个函数类似于empty(),创建指定形状的数组,不过zeros是以0来初始化,ones是以1来初始化,其中的1和0 默认为浮点数,full函数()可以以自己指定的值来填充,所以会多一个参数fill_value

原型

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

参数说明:

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

例1:输出3行2列,用0初始化的数组

import numpy as np
a6=np.zeros([3,2])
print(a6)

输出

[[0. 0.]

[0. 0.] [0. 0.]]

1.1.4 使用arange()函数

原型

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

根据 start 与 stop 指定的范围以及 step 设定的步长,生成一个 ndarray。

参数说明:

参数描述
start起始值,默认为0
stop终止值(不包含)
step步长,默认为1
dtype返回ndarray的数据类型,如果没有提供,则会使用输入数据的类型。

例1:生成一个从2起始,9结束,步长为2的,元素类型为浮点型的一维数组

 
import numpy as np
a8=np.arange(2,9,2,"f2")
print(a8)
输出

[2. 4. 6. 8.]

1.1.5 使用random.rand()函数

这个函数可以生成任意维度的数组,数组元素的范围为0到1

参数里面,如果有一个数字,代表是一维的,两个数字,则是二维的,三个数组,代表三维的

import numpy as np
a1=np.random.rand(4)
a2=np.random.rand(4,2)
print(a1)
print(a2)

1.1.6 使用random.randint()

rand函数只能生成0到1 的浮点数,而我们的randint()生成的是 自己指定范围的整数

原型

randint(low,high=None,size=none,dtype="-1")

参数说明

参数说明
low包含的下界
high不包含的上界
size元素个数
dtype元素类型

例1:生成从0到9的五个随机数

import numpy as np
arr=np.random.randint(0,10,5)
print(arr)

输出

[6 4 7 1 5]

1.2 从已有数组创建数组

1.2.1 使用asarray()函数

numpy.asarray 类似 numpy.array,但 numpy.asarray 参数只有三个,比 numpy.array 少两个。

原型

numpy.asarray(a, dtype = None, order = None)

参数说明:

参数描述
a任意形式的输入参数,可以是,列表, 列表的元组, 元组, 元组的元组, 元组的列表,多维数组
dtype数据类型,可选
order可选,有"C"和"F"两个选项,分别代表,行优先和列优先,在计算机内存中的存储元素的顺序。

例1: 利用已有的1.1.3 节的a6 数组,生成一个新的数组

import numpy as np
a6=np.zeros([3,2])
a7=np.asanyarray(a6)
print(a7)

输出

[[0. 0.] [0. 0.] [0. 0.]]

1.2.2使用frombuffer()函数

frombuffer()函数用于实现动态数组

numpy.frombuffer 接受 buffer 输入参数,以流的形式读入转化成 ndarray 对象。

numpy.frombuffer(buffer, dtype = float, count = -1, offset = 0)

注意:buffer 是字符串的时候,Python3 默认 str 是 Unicode 类型,所以要转成 bytestring 在原 str 前加上 b。

参数说明:

参数描述
buffer可以是任意对象,会以流的形式读入。
dtype返回数组的数据类型,可选
count读取的数据数量,默认为-1,读取所有数据。
offset读取的起始位置,默认为0。

例1:以流的形式从a开始读入“You are the best !” 建立数组

import numpy as np
a6=np.zeros([3,2])
a7=np.asanyarray(a6)
print(a7)

输出

[b'a' b'r' b'e' b' ' b't' b'h' b'e' b' ' b'b' b'e' b's' b't' b'!']

1.2.3 使用fromiter()函数

这个函数是通过已有的迭代器创建数组,对于迭代器,我们需要知道常见的比如list,tuple,dict等都是,具体可以阅读以下博客

第4章 Python基础概念之迭代、可迭代对象、迭代器-CSDN博客

原型

numpy.fromiter(iterable, dtype, count=-1)
参数描述
iterable可迭代对象
dtype返回数组的数据类型
count读取的数据数量,默认为-1,读取所有数据

示例:通过一个list迭代对象建立一个数组

import numpy as np
a9=[1,2,3,4,5]
arr=np.fromiter(a9,dtype="i1")
print(a9)

输出

[1,2,3,4,5]

注意:这里的dtype没有默认值,故需要申明dtype,否则会报错

2.关于其他补充说明

2.1 类型转换

numpy 主要通过dtype自定义,如果未自定义,则根据传入的内容调整类型

numpy默认ndarray的所有的元素的数据类型是相同的,这一点与python中的list不同,如果传进来的列表中包含不同的类型,则统一为同一类型,优先级str(字符串)>float>int

例1:比较float和int的优先级

import numpy as np
a1=np.array([0.1,0.2,3,4,5])
print(a1)

输出:

[0.1 0.2 3. 4. 5. ]

可见如果有浮点型,就优先将整形转换为浮点型

例2:比较str和float,int的优先级

import numpy as np
a2=np.array([0.1,0.2,"3",4,5])
print(a1)

输出:

['0.1' '0.2' '3' '4' '5']

可见有字符型的“3”以后,会把所有的浮点型,整形都转换为浮点型

2.2 其他创建方式

以上仅罗列了一些常用的,数组对象的生成还可以有更多的选择

如生成正态分布的randn()函数

如生成对角矩阵的eye()函数

使用的情况类似,所以需要用到的情况下直接查表即可

---------------------------------------相关文章快速跳转----------------------------------------

Numpy系列

Numpy系统学习(一)Numpy数组介绍数组的秩Qodi的博客-CSDN博客

Numpy系统学习(二)Numpy的数据类型_Qodi的博客-CSDN博客

Numpy系统学习(三)创建Ndarray数组对象创建ndarray对象Qodi的博客-CSDN博客

Numpy系统学习(四)数组元素操作_Qodi的博客-CSDN博客

Numpy系统学习(五)数组元素运算numpy 取反Qodi的博客-CSDN博客

Pandas系列

Pandas系统学习(一)基本数据结构pandas架构Qodi的博客-CSDN博客

pandas系统学习(二)数据处理.md_Qodi的博客-CSDN博客

pytorch系列

从原理到实践 | Pytorch tensor 张量花式操作_Qodi的博客-CSDN博客

pytorch的自动微分、计算图 | 代码解析_Qodi的博客-CSDN博客

从原理到代码实践 | pytorch损失函数_Qodi的博客-CSDN博客

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值