numpy数组创建
下面将展示一些ndarray的构造函数
numpy.empty
这个构造函数将创造指定形状的空数组。它的构造函数如下:
numpy.empty(shape, dtype = float, order = 'C')
- shape表示创建数组的形状
- dtype表述数组内元素的数据类型
- Order 'C’为按行的 C 风格数组,'F’为按列的 Fortran 风格数组
例1
import numpy as np
a=np.empty([2,3],dtype=int)
print(a)
'''
输出为
[[ 648544432 32763 648548960]
[ 32763 1176174320 413]]
因为是空所以输出int型随机数
'''
numpy.zeros
该构造函数构造全为0的数组,其构造函数如下
numpy.zeros(shape, dtype = float, order = 'C')
例1
import numpy as np
a=np.zeros([2,3],dtype=int)
print(a)
'''
输出为
[[0 0 0]
[0 0 0]]
'''
例2
#也可以自定义dtype
import numpy as np
a=np.zeros((2,2),dtype=[('x','i1'),('y','f4')])
print(a)
'''
输出为:
[[(0, 0.) (0, 0.)]
[(0, 0.) (0, 0.)]]
'''
numpy.ones
该构造器返回全为1的数组,其构造函数如下:
numpy.ones(shape, dtype = None, order = 'C')
例1
import numpy as np
a=np.ones((2,2),dtype=[('x','i1'),('y','f4')])
print(a)
'''
输出为
[[(1, 1.) (1, 1.)]
[(1, 1.) (1, 1.)]]
'''
numpy-以现有数据创建数组
我们会在这一目题讨论如何使用一系列构造函数将现有数据构造为numpy的数组。
numpy.asarray
这个函数可以将任意的序列转换为数组,其构造函数如下:
numpy.asarray(a, dtype = None, order = None)
- a 任意形式的输入参数,比如列表、列表的元组、元组、元组的元组、元组的列表
- dtype 转化后数组的数据类型
- order 'C’为按行的 C 风格数组,'F’为按列的 Fortran 风格数组
例1
import numpy as np
a=(1,2,3,4,5)
b=np.asarray(a,dtype=float)
print(b)
#输出为[1. 2. 3. 4. 5.]
numpy.frombuffer
这个函数将任意待处理的对象转化为一维数组。
它的构造函数如下
numpy.frombuffer(buffer, dtype = float, count = -1, offset = 0)
- buffer 待处理的对象
- dtype 返回数组的数据类型,默认为float
- count 需要读取的数据数量,默认为-1,读取所有数据
- offset 需要读取的起始位置,默认为0
FBI WARNING!
如果buffer的类型是字符串,那么需要在待处理字符串前面加上一个‘b’。因为Python3默认str是Unicode类型,所以要转成bytestring在原str前加上b。
例1
import numpy as np
s =b'wdnmd rush b'
a = np.frombuffer(s,dtype='S1')
print(a)
#输出为:[b'w' b'd' b'n' b'm' b'd' b' ' b'r' b'u' b's' b'h' b' ' b'b']
numpy-在给定的数值范围创建数组
我们将要学习如何在给定的数值范围之中创建数组
numpy.arange
与列表的构造函数range类似,其构造函数如下
numpy.arange(start, stop, step, dtype)
- start 范围的起始值,默认为0
- stop 范围的终止值(不包含)
- step 两个值的间隔,默认为1
- dtype 创建数组的数据类型,默认为输入数据的数据类型。
例1
import numpy as np
a=np.arange(1,5)
print(a)
#输出为[1,2,3,4]
例2
import numpy as np
a=np.arange(1,10,2,dtype='f4')
print(a)
#输出为[1. 3. 5. 7. 9.]
numpy.linspace
这个函数与arange类似,不过linspace是指定均匀间隔数量,而不是arange所指定的步长。其构造函数如下:
numpy.linspace(start, stop, num, endpoint, retstep, dtype)
- start 序列的起始值
- stop 序列的终止值
- num 即处理后生成的数组元素数量,默认为50
- endpoint 如果endpoint为true,则序列包括最后一个数,否则不包括。默认为true
- retstep 如果为true,返回样例,以及连续数字之间的步长
- dtype 转换后的数组的数据类型
例1
import numpy as np
a=np.linspace(0,10,5)
print(a)
#输出为[ 0. 2.5 5. 7.5 10. ]
例2
import numpy as np
a=np.linspace(0,10,5,endpoint=False)
print(a)
#输出为[0. 2. 4. 6. 8.]
例3
import numpy as np
a=np.linspace(0,10,5,endpoint=False,retstep=True)
print(a)
#输出为(array([0., 2., 4., 6., 8.]), 2.0)
#这说明步长为2.0
numpy.logspace
这个函数我认为是用来批量处理幂运算的。其构造函数如下:
numpy.logscale(start, stop, num, endpoint, base, dtype)
- start 起始值是base ** start
- stop 终止值是base ** stop
- num 范围内的数值数量,默认为50
- endpoint 如果为true,终止值包含在输出数组当中
- base 对数空间的底数,默认为10
- dtype 输出数组的数据类型,如果没有提供,则取决于其它参数
在Python中‘*’代表乘法运算,而‘ ** ’则代表幂运算,如a**3代表a的三次方
例
import numpy as np
a=np.logspace(1,10,num=10,base=2,dtype='i4')
print(a)
#输出为[ 2 4 8 16 32 64 128 256 512 1024]
江州司马青衫湿
正在学Python的猛男小鞠 发布了30 篇原创文章 · 获赞 24 · 访问量 5163 私信 关注