ndarray是一个包含了相同元素类型和大小的多维数组。
创建数组:
1、使用系统方法
empty(shape[, dtype, order]) # 根据给定的参数创建一个ndarray数组,值用随机数填充
例:
>>> np.empty([2, 2]) array([[ -9.74499359e+001, 6.69583040e-309], [ 2.13182611e-314, 3.06959433e-309]])
empty_like(a[, dtype, order, subok]) #和empty不同的是,需要给出一个array的模板,就是a参数,新生成的ndarray继承了a的shape和dtype
例:
>>> a = ([1,2,3], [4,5,6]) >>> np.empty_like(a) array([[-1073741821, -1073741821, 3], #random [ 0, 0, -1073741821]])
eye(N[, M, k, dtype]) #生成一个N行M列的数组,K指定一条斜线,这条斜线上的值都是1,数组的其他元素维0
例:生成一个5行4列的数组,索引为1的斜线上全部是1,其他元素为0
>>> np.eye(5,4,1) array([[ 0., 1., 0., 0.], [ 0., 0., 1., 0.], [ 0., 0., 0., 1.], [ 0., 0., 0., 0.], [ 0., 0., 0., 0.]])
identity(n[, dtype]) #生成一个正方形的数组即N×N类型的数组,且索引万恶哦0的斜线上维1,其他元素维0
例:
>>> np.identity(3) array([[ 1., 0., 0.], [ 0., 1., 0.], [ 0., 0., 1.]])
ones(shape[, dtype, order]) #生成一个指定shape和dtype的数组,用1填充
例:
>>> np.ones(5) array([ 1., 1., 1., 1., 1.]) >>> np.ones((2, 1)) array([[ 1.], [ 1.]])
ones_like(a[, dtype, order, subok]) #和ones的区别就是需要给定一个dnarray模板,新生成的array继承了a的shape和dtype
例:
>>> x = np.arange(6) >>> x = x.reshape((2, 3)) >>> x array([[0, 1, 2], [3, 4, 5]]) >>> np.ones_like(x) array([[1, 1, 1], [1, 1, 1]])
zeros(shape[, dtype, order]) #根据给定的shape,和dtype生成一个由0填充的数组
例:
>>> np.zeros(5) array([ 0., 0., 0., 0., 0.])
zeros_like(a[, dtype, order, subok]) #根据a模板生成一个新的用0 填充的ndarray数组
例:
>>> x = np.arange(6) >>> x = x.reshape((2, 3)) >>> x array([[0, 1, 2], [3, 4, 5]]) >>> np.zeros_like(x) array([[0, 0, 0], [0, 0, 0]])
full(shape, fill_value[, dtype, order]) #用指定的值填充数组
例:
>>> np.full((2, 2), 10) array([[10, 10], [10, 10]])
full_like(a, fill_value[, dtype, order, subok]) #根据a模板的shape和dtype生成一个数组,如果指定的填充数不是a的dtype类型,会向下取整,这时候也可以指定新数组的dtype类型。
例:
>>> x = np.arange(6, dtype=np.int) >>> np.full_like(x, 1) array([1, 1, 1, 1, 1, 1]) >>> np.full_like(x, 0.1) #如果full_value设置为1.2则就是用1填充 array([0, 0, 0, 0, 0, 0]) >>> np.full_like(x, 0.1, dtype=np.double) array([ 0.1, 0.1, 0.1, 0.1, 0.1, 0.1]) >>> np.full_like(x, np.nan, dtype=np.double) array([ nan, nan, nan, nan, nan, nan])
2、用指定的数据填充
array(object[, dtype, copy, order, subok, ndmin]) #用对象直接填充数组
例:
>>> np.array([1, 2, 3]) #一维数组 array([1, 2, 3]) >>> np.array([[1, 2], [3, 4]]) #二维数组 array([[1, 2], [3, 4]]) >>> np.array([1, 2, 3], ndmin=2) #只有一个元素的二维数组 array([[1, 2, 3]]) >>> np.array(np.mat(‘1 2; 3 4‘)) #从子类创建 array([[1, 2], [3, 4]])
asarray(a[, dtype, order]) #把lists, lists of tuples, tuples, tuples of tuples, tuples of lists and ndarrays转化为array
例:
>>> a = [1, 2] >>> np.asarray(a) array([1, 2])
asanyarray(a[, dtype, order]) #通过ndarray的子类创建array
>>> a = [1, 2] >>> np.asanyarray(a) array([1, 2])
ascontiguousarray(a[, dtype]) #返回一个地址连续的数组(C order)
>>> x = np.arange(6).reshape(2,3) >>> np.ascontiguousarray(x, dtype=np.float32) array([[ 0., 1., 2.], [ 3., 4., 5.]], dtype=float32) >>> x.flags[‘C_CONTIGUOUS‘] True
asmatrix(data[, dtype]) # 把数组转化为矩阵,新的变量没有copy数据,只是指向原有的数据
>>> x = np.array([[1, 2], [3, 4]]) >>> m = np.asmatrix(x) >>> x[0,0] = 5 >>> m matrix([[5, 2], [3, 4]])
copy(a[, order]) #顾名思义就是复制的意思
>>> x = np.array([1, 2, 3]) >>> y = x >>> z = np.copy(x) >>> x[0] = 10 >>> x[0] == y[0] True >>> x[0] == z[0] False
frombuffer(buffer[, dtype, count, offset]) #把buffer数据转化为1维数组ps:如果数据不是机器字节顺序,需要指定他的dtype类型
>>> s = ‘hello world‘ >>> np.frombuffer(s, dtype=‘S1‘, count=5, offset=6) array([‘w‘, ‘o‘, ‘r‘, ‘l‘, ‘d‘], dtype=‘|S1‘)
frombuffer(buffer[, dtype, count, offset]) #从文件读取数据 ps:该方法不长用用save替代
fromfunction(function, shape, **kwargs) #用方法计算出来的数据填充数组
>>> np.fromfunction(lambda i, j: i + j, (3, 3), dtype=int) array([[0, 1, 2], [1, 2, 3], [2, 3, 4]])
fromiter(iterable, dtype[, count]) #通过迭代器生成一个一维数组
>>> iterable = (x*x for x in range(5)) >>> np.fromiter(iterable, np.float) array([ 0., 1., 4., 9., 16.])
fromstring(string[, dtype, count, sep]) #把二进制流或者字符串转化维数组
>>> np.fromstring(‘\x01\x02‘, dtype=np.uint8) array([1, 2], dtype=uint8) >>> np.fromstring(‘1 2‘, dtype=int, sep=‘ ‘) array([1, 2]) >>> np.fromstring(‘1, 2‘, dtype=int, sep=‘,‘) array([1, 2]) >>> np.fromstring(‘\x01\x02\x03\x04\x05‘, dtype=np.uint8, count=3) array([1, 2, 3], dtype=uint8)
arange([start,] stop[, step,][, dtype]) |
#根据给定的区间创建连续的值
>>> np.arange(3) array([0, 1, 2]) >>> np.arange(3.0) array([ 0., 1., 2.]) >>> np.arange(3,7) array([3, 4, 5, 6]) >>> np.arange(3,7,2) array([3, 5])
numpu.linspace(start,stop,num=50,endpoint=True,retstep=False,dtype=None) #arrange一样,主要是生成浮点型
>>> np.linspace(2.0, 3.0, num=5) array([ 2. , 2.25, 2.5 , 2.75, 3. ]) >>> np.linspace(2.0, 3.0, num=5, endpoint=False) array([ 2. , 2.2, 2.4, 2.6, 2.8]) >>> np.linspace(2.0, 3.0, num=5, retstep=True) (array([ 2. , 2.25, 2.5 , 2.75, 3. ]), 0.25)