1. 首页
  2. IT资讯

Numpy 入门之创建数组

“u003Cdivu003Eu003Cp class=”ql-align-justify”u003E除了《Numpy 简介》篇介绍的4种创建数组的方法外,常用的方法还有以下几种:u003Cu002Fpu003Eu003Culu003Eu003Cli class=”ql-align-justify”u003Earange函数,通过制定起始值、终值和步长创建一维数组,数组不包括终值。不同于Python的range函数,步长在这里可以是小数:u003Cu002Fliu003Eu003Cu002Fulu003Eu003Cpreu003E>>> np.arange(0, 2, 0.1)array([0. , 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1. , 1.1, 1.2,u003Cbru003E1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9]u003Cbru003E>>> np.arange(1, 0, -0.2) #步长可以为负数u003Cbru003Earray([1. , 0.8, 0.6, 0.4, 0.2])u003Cbru003Eu003Cu002Fpreu003Eu003Cpu003Elinspace函数,通过指定起始值、终值和元素个数来创建一维数组(等差数列)。可以通过endpoint关键字指定是否包含终值,默认True,即包含终值。u003Cu002Fpu003Eu003Cpreu003E>>> np.linspace(0, 1, 4)array([0. , 0.33333333, 0.66666667, 1. ])u003Cbru003E>>> np.linspace(0, 1, 4, endpoint=False)u003Cbru003Earray([0. , 0.25, 0.5 , 0.75])u003Cbru003Eu003Cu002Fpreu003Eu003Cp class=”ql-align-justify”u003Elogspace函数,与linspace类似,不过它创建等比数列。u003Cu002Fpu003Eu003Cpre class=”ql-align-justify”u003E>>> np.logspace(0,2,5) #从10的0次方,到10的2次方,共5个数u003Cbru003Earray([ 1. , 3.16227766, 10. , 31.6227766 ,u003Cbru003E 100. ])u003Cbru003Eu003Cu002Fpreu003Eu003Cp class=”ql-align-justify”u003Efromstring函数,从字节序列创建一维数组。u003Cu002Fpu003Eu003Cp class=”ql-align-justify”u003E格式:np.fromstring(string, dtype=float, count=-1, sep=”)u003Cu002Fpu003Eu003Cpreu003E>>> np.fromstring(“1,2,3″, dtype = float, sep=”,”)array([1., 2., 3.])u003Cbru003E>>> np.fromstring(“1,2,3″, dtype = float, count =2, sep=”,”)u003Cbru003Earray([1., 2.]) #count 限制返回的数组的元素个数u003Cbru003E>>> np.fromstring(“abc”, dtype = np.int8) #返回ASCII码u003Cbru003Earray([97, 98, 99], dtype=int8)u003Cbru003E>>> np.fromstring(“abcd”, dtype = np.int16) #把字节98和字节97一起当做一个16bit的整数u003Cbru003Earray([25185, 25699], dtype=int16)#它的值是98*256+97 = 25185。可以看出内存中是以little endian(低字节位在前)方式保存数据的u003Cbru003Eu003Cu002Fpreu003Eu003Cpu003Eloadtxt函数,从文本文件读入数据并以数组的形式输出,只能读入结构化的数组(每行的列数一样)。可移动文件指针后再用loadtxt。u003Cu002Fpu003Eu003Cpu003E格式:loadtxt(fname, dtype=<class ‘float’>, comments=’#’, delimiter=None, converters=None, skiprows=0, usecols=None, unpack=False, ndmin=0, encoding=’bytes’)u003Cu002Fpu003Eu003Cpu003Efname: 文件对象,或文件路径u003Cu002Fpu003Eu003Cpu003Edtype:结果数组的数据类型,默认为浮点型u003Cu002Fpu003Eu003Cpu003Ecomments:注释符,默认为“#”,以其开始的行会被忽略u003Cu002Fpu003Eu003Cpu003Edelimiter:分隔符,默认为空白符(空格,制表符等)u003Cu002Fpu003Eu003Cpu003Econverters: 转换字典。字典的key为列号;字典的value为一个函数,用于将该列的字符串解析成想要的数值,比如第0列是表示日期的字符串:“converters = {0: datestr2num}“,又比如 “converters = {3: lambda s: float(s.strip() or 0)}“.u003Cu002Fpu003Eu003Cpu003Eskiprows: 整形,跳过开头的若干行u003Cu002Fpu003Eu003Cpu003Eusecols:整形或序列。默认为None,读取所有列。e.g. usecols=(1, 4, 5),则只提取第 1,4,5 列(0列为起始列)u003Cu002Fpu003Eu003Cpu003Eunpack:布尔型,若为真,则返回的数组被转置。u003Cu002Fpu003Eu003Cpu003Endim: 整形,最少的维度。合法的值有0(默认),1和2。u003Cu002Fpu003Eu003Cpu003Eencode:字符串类型,编码。u003Cu002Fpu003Eu003Cpu003E如读取下面的csv文件:u003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002Fpgc-imageu002Facd52a5392844f8987412f2c13f8d466″ img_width=”271″ img_height=”107″ alt=”Numpy 入门之创建数组” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpre class=”ql-align-justify”u003E>>> np.loadtxt(r”d:\data1.csv”,delimiter=”,”)u003Cbru003Earray([[1. , 2. , 3. ],u003Cbru003E [4. , 5. , 6. ],u003Cbru003E [7. , 8. , 9.999]]u003Cbru003Eu003Cu002Fpreu003Eu003Cpu003Efromfile函数,从文本文件或二进制文件创建数组u003Cu002Fpu003Eu003Cpu003E格式: np.fromfile(file, dtype=float, count=-1, sep=”)u003Cu002Fpu003Eu003Cpu003Efile: 打开的文件对象,或者文件路径u003Cu002Fpu003Eu003Cpu003Edtype:返回的数组的数据类型u003Cu002Fpu003Eu003Cpu003Ecount:读取的项数,-1代码读取全部项u003Cu002Fpu003Eu003Cpu003Esep:项目间的分隔符。空字符串”意味着文件被当做二进制文件对待。空格符‘ ’匹配另个或多个空白的字符。u003Cu002Fpu003Eu003Cpu003E示例,略u003Cu002Fpu003Eu003Cp class=”ql-align-justify”u003Efromfunction函数。可以写一个python函数,将数组的下标转换为数组中对应的值,然后以此函数为参数,创建数组。u003Cu002Fpu003Eu003Cp class=”ql-align-justify”u003E格式:fromfunction(function, shape, dtype = float)u003Cu002Fpu003Eu003Cp class=”ql-align-justify”u003Efunction: python函数u003Cu002Fpu003Eu003Cp class=”ql-align-justify”u003Eshape : (N,) tuple of intsu003Cu002Fpu003Eu003Cp class=”ql-align-justify”u003Edtype:传递给function的参数(下标)的数据类型,默认为float。u003Cu002Fpu003Eu003Cpre class=”ql-align-justify”u003E>>> def func(i):u003Cbru003E return i%4 +1u003Cbru003E>>> np.fromfunction(func,(10,)) #下标从0到9u003Cbru003Earray([1., 2., 3., 4., 1., 2., 3., 4., 1., 2.])u003Cbru003E>>> np.fromfunction(lambda i, j: i + j, (3, 3), dtype=int) #行下标0到2,列小标0到2u003Cbru003Earray([[0, 1, 2],u003Cbru003E [1, 2, 3],u003Cbru003E [2, 3, 4]])u003Cbru003Eu003Cu002Fpreu003Eu003Cu002Fdivu003E”

原文始发于:Numpy 入门之创建数组

主题测试文章,只做测试使用。发布者:玩家L-,转转请注明出处:http://www.cxybcw.com/10620.html

联系我们

13687733322

在线咨询:点击这里给我发消息

邮件:1877088071@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

QR code