python numpy(1)数组创建和变换

    技术2022-07-14  71

    NumPy是使用Python进行科学计算的基础软件包。

    导入:

    import numpy as np

    NumPy 提供了一个非常强大的N维数组对象 Ndarray。

    ndarray数组包含两部分,实际的数据和描述数据的元数据(数据维度、数据类型等),用轴表示保存数组的维度,秩表示轴的数量。

    >>>a = nd.array([[1,2,3],[4,5,6]]) >>>a array([[1,2,3], [4,5,6]]) >>>print(a)#ndarray对象输出成[],元素由空格分隔 [[1 2 3], [4 5 6]] >>>print(type(a)) <class 'numpy.ndarray'>

    ndarray数组创建:

    1.x = np.array(list/tuple[,dtype])

    >>>li = [1,2,3,4.1] >>>a = np.array(li,dtype='int32') >>>print(a) [1,2,3,4]

    2.使用numpy函数

    >>>a = np.arange(5);print(a) #类似range()函数,产生从0到n-1的一位数组 [0,1,2,3,4] >>>a = np.ones((3,2),dtype='int32');print(a) #根据指定的(n,m)形状生成全1数组 [[1 1] [1 1] [1 1]] >>>a = np.zeros((3,2));print(a) #同上生成全0数组 [[0 0] [0 0] [0 0]] >>>a = np.full((2,3),2.1);print(a)#根据指定的(n,m)形状生成同值数组 [[2.1 2.1 2.1] [2.1 2.1 2.1]] >>>a = np.eye(2);print(a) #生成n*n矩阵,对角线为1,其它全为0 [[1. 0.] [0. 1.]] >>>b = np.ones_like(a) >>>b = np.zeros_like(a) >>>b = np.full_like(a,val)#上述函数演变而成,只是依据a的形状 >>>a = np.linspace(1,10,endpoint=False);print(a)#根据起止等间距填充数据 [1. 3.25 5.5 7.75] >>>c = np.concatenate((a,b))#将多个数组合并成为一个新数组

    ndarray对象属性:

    属性说明.shape尺寸,即对于矩阵,n行m列.ndim秩,即轴的数量或维度的数量.size元素的个数,相当于.shape中的n*m.dtype元素的类型.itemsize每个元素的大小,以字节为单位

    ndarray数组维度变换:

    >>>a = ones((2,3,4),dtype=np.int32) >>>a.reshape((3,8))#不改变原数组,返回一个shape形状的新数组 array([[1 1 ... 1 1] [1 1 ... 1 1] [1 1 ... 1 1]]) >>>a.resize((3,8))#同.reshape()但改变原数组 >>>a.fltten()#原数组不变,返回降维后的一维数组 array([1,1...1,1]) >>>a.swapaxes(1,2)#交换轴数量,不改变原数组(轴从0开始索引) array([[[1 1 1] [1 1 1] [1 1 1] [1 1 1]] [[1 1 1] [1 1 1] [1 1 1] [1 1 1]]])

    ndarray数组类型变换:

    >>>a = np.ones((2,3,4),dtype=np.int) >>>a array([[[1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1]], [[1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1]]]) >>>b = a.astype(np.float)#新生成一个数组改变原数组类型 >>>b array([[[1., 1., 1., 1.], [1., 1., 1., 1.], [1., 1., 1., 1.]], [[1., 1., 1., 1.], [1., 1., 1., 1.], [1., 1., 1., 1.]]]) >>>ls = a.tolist()#将ndarray数组转换为列表
    Processed: 0.009, SQL: 9