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()函数
使用的情况类似,所以需要用到的情况下直接查表即可
原文链接:https://blog.csdn.net/Q52099999/article/details/128956392
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()函数
使用的情况类似,所以需要用到的情况下直接查表即可
原文链接:https://blog.csdn.net/Q52099999/article/details/128956392
本站大部分文章、数据、图片均来自互联网,一切版权均归源网站或源作者所有。
如果侵犯了您的权益请来信告知我们删除。邮箱:1451803763@qq.com