精华内容
下载资源
问答
  • Python 三维数组升为四维数组

    千次阅读 2021-03-31 14:42:11
    在尝试用深度学习做项目时,发现对于Pytorch框架下的cnn网络,灰度图的输入格式应该为(n,ch,h,w)。n为图片数量,ch为通道数,h,w为图片长宽像素。 然而实际在opencv处理的通道数为1灰度图时,其给出的图片大小为...

    在尝试用深度学习做项目时,发现对于Pytorch框架下的cnn网络,灰度图的输入格式应该为(n,ch,h,w)。n为图片数量,ch为通道数,h,w为图片长宽像素。
    然而实际在opencv处理的通道数为1灰度图时,其给出的图片大小为(h,w)其直接忽视了通道数,这样数据集的格式为(n,h,w)。不满足Pytorch输入要求。
    而如果采用np.reshape(1,h,w)改变格式,当图片用reshape(h,w)复原为(h,w)时可能会失真。因此可以采用np.newaxis加一个维度。
    以下为代码

    for j in range(len(train_name5)):
        image_data = [] #空的list
        image_label = []
        for i in range(len(level)):
            read_path=path+level[i]+"/"+train_name5[j]
            pic=cv.imread(read_path)
            gray=cv.cvtColor(pic,cv.COLOR_BGR2GRAY)
            gray=cv.resize(gray,(150,150))#改变图片大小
            cv.imshow("aa",gray)
            #gray=gray.reshape(1,150,150)
            image_label_data=i #标签
            gray = gray.astype(float)
            image_data.append(gray[np.newaxis,:])#增加1dim
            image_label.append(image_label_data)
        image_label = np.array(image_label)
        image_label = image_label.astype(int)
        #print(image_data.shape)
        np.save("Image_data5.npy", image_data)
        np.save("label_data5.npy", image_label)
    i=np.load("Image_data5.npy")
    print(i.shape)
    
    #输出结果
    (5, 1, 150, 150)
    
    展开全文
  • 一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。但是,...
  • 把二维数组拆分为三维数组 目标:把一个m∗nm*nm∗n的数组,每x行为一页(x可被m整除),拆分为一个m行n列x页的三维数组 代码 import numpy as np a = np.arange(30) a.resize(6,5) a array([[ 0, 1, 2, 3, 4], [ 5...

    说实话,我也奇怪我怎么会有这么奇怪的需求,,,

    把二维数组拆分为三维数组

    目标:把一个 m ∗ n m*n mn的数组,每x行为一页(x可被m整除),拆分为一个m行n列x页的三维数组

    代码

    import numpy as np
    a = np.arange(30)
    a.resize(6,5)
    a
    array([[ 0,  1,  2,  3,  4],
           [ 5,  6,  7,  8,  9],
           [10, 11, 12, 13, 14],
           [15, 16, 17, 18, 19],
           [20, 21, 22, 23, 24],
           [25, 26, 27, 28, 29]])
    a.reshape(3,2,5) # 3页,2行,5列
    array([[[ 0,  1,  2,  3,  4],
            [ 5,  6,  7,  8,  9]],
           [[10, 11, 12, 13, 14],
            [15, 16, 17, 18, 19]],
           [[20, 21, 22, 23, 24],
            [25, 26, 27, 28, 29]]])
    

    把三维数组拆为四维数组

    a=np.arange(60)
    a.resize(6,2,5)
    a
    array([[[ 0,  1,  2,  3,  4],
            [ 5,  6,  7,  8,  9]],
           [[10, 11, 12, 13, 14],
            [15, 16, 17, 18, 19]],
           [[20, 21, 22, 23, 24],
            [25, 26, 27, 28, 29]],
           [[30, 31, 32, 33, 34],
            [35, 36, 37, 38, 39]],
           [[40, 41, 42, 43, 44],
            [45, 46, 47, 48, 49]],
           [[50, 51, 52, 53, 54],
            [55, 56, 57, 58, 59]]])
    a.resize(3, 2, 2, 5)
    a
    array([[[[ 0,  1,  2,  3,  4],
             [ 5,  6,  7,  8,  9]],
            [[10, 11, 12, 13, 14],
             [15, 16, 17, 18, 19]]],
           [[[20, 21, 22, 23, 24],
             [25, 26, 27, 28, 29]],
            [[30, 31, 32, 33, 34],
             [35, 36, 37, 38, 39]]],
           [[[40, 41, 42, 43, 44],
             [45, 46, 47, 48, 49]],
            [[50, 51, 52, 53, 54],
             [55, 56, 57, 58, 59]]]])
    

    a从6页2行5列,被拆为3部分2页2行5列,可以看到直接用resize把待拆分数组的第一维直接因子分解,得到的拆分结果不会乱序。

    如果对得到的四维数组转置,比如把第二维和第三维换了

    a.transpose(0, 2, 1, 3)
    array([[[[ 0,  1,  2,  3,  4],
             [10, 11, 12, 13, 14]],
            [[ 5,  6,  7,  8,  9],
             [15, 16, 17, 18, 19]]],
           [[[20, 21, 22, 23, 24],
             [30, 31, 32, 33, 34]],
            [[25, 26, 27, 28, 29],
             [35, 36, 37, 38, 39]]],
           [[[40, 41, 42, 43, 44],
             [50, 51, 52, 53, 54]],
            [[45, 46, 47, 48, 49],
             [55, 56, 57, 58, 59]]]])
    

    注意a.transpose(0, 2, 1, 3)并不会概念a,如果要把转置得到的矩阵存下来就必须赋值,如b=a.transpose(0, 2, 1, 3),这样b就是转置后的矩阵,a并未变化。

    b=numpy.array([[1,2],[3,4]])
    c=b.transpose(1,0)
    b
    Out[16]: 
    array([[1, 2],
           [3, 4]])
    c
    Out[17]: 
    array([[1, 3],
           [2, 4]])
    
    展开全文
  • 维数组转为一维数组 已知a = [[4, 0, 1], [9, 2, 7], [8, 12, 90]] 列表推导式 [i for j in a for i in j] itertools from itertools import chain list(chain.from_iterable(a)) sum小技巧 sum(a, []) ...

    二维数组转为一维数组

    已知a = [[4, 0, 1], [9, 2, 7], [8, 12, 90]]

    列表推导式

    [i for j in a for i in j]
    

    itertools

    from itertools import chain
    list(chain.from_iterable(a))
    

    sum小技巧

    sum(a, [])
    

    operator

    import operator
    from functools import reduce
    print(reduce(operator.add, a))
    

    实战(螺旋矩阵)

    def fun(arr, lines):
        total_matrix = [[0] * lines for i in range(lines)]
        """ 二维矩阵转为一维矩阵 """
        num = [i for j in arr for i in j]  
        num = sorted(num)
        show_num = 0
        col = lines - 1
        row = lines - 1
        start_line = 0
    
        def print_ju(start_line, col, row, show_num):
            if row == 0:
                if lines % 2 != 0:
                    total_matrix[lines // 2][lines // 2] = lines * lines
            else:
                for i in range(start_line, col):  # 打印上横行
                    total_matrix[start_line][i] = num[show_num]
                    show_num += 1
                for i in range(start_line, row, 1):  # 打印右竖行
                    total_matrix[i][col] = num[show_num]
                    show_num += 1
                for i in range(row, row - col + start_line, -1):  # 打印下横行
                    total_matrix[row][i] = num[show_num]
                    show_num += 1
                for i in range(col, col - row + start_line, -1):  # 打印左边竖行
                    total_matrix[i][row - col + start_line] = num[show_num]
                    show_num += 1
                return print_ju(start_line + 1, row - 1, col - 1, show_num)
    
        print_ju(start_line, row, col, show_num)
        for i in total_matrix:
            for x in i:
                print(format(x, '3'), end=' ')
            print()
    
    
    if __name__ == '__main__':
        n = int(input('请输入螺旋矩阵的行数:'))
        arr = [[4, 0, 1], [9, 2, 7], [8, 12, 90]]
        fun(arr, n)
    
    展开全文
  • numpy:一维数组 a=np.array([1,2,3,4,5]) print(a[0])#查询 print(a[1:3])#切片 for i in a: print(i)#循环访问 print(a.dtype)#数据类型 c=a+1 print(c)#向量化运算 1 [2 3] 1 2 3 4 5 int32 [2 3 4 5 6] ...
    import numpy as np
    import pandas as pd
    

    numpy:一维数组

    a=np.array([1,2,3,4,5])
    print(a[0])#查询
    
    print(a[1:3])#切片
    
    for i in a:
        print(i)#循环访问
    
    
    print(a.dtype)#数据类型
    
    c=a+1
    print(c)#向量化运算
    
    1
    [2 3]
    1
    2
    3
    4
    5
    int32
    [2 3 4 5 6]
    

    pandas:一维数组

    barca=pd.Series([11,10,9,],index=['neymar','messi','suarez'])
    print(barca)
    
    neymar    11
    messi     10
    suarez     9
    dtype: int64
    
    barca.describe()
    
    count     3.0
    mean     10.0
    std       1.0
    min       9.0
    25%       9.5
    50%      10.0
    75%      10.5
    max      11.0
    dtype: float64
    
    barca.iloc[0]
    
    11
    
    barca.loc['messi']
    
    10
    
    s1 = pd.Series([1,2,3,4],index = ['a','b','c','d'])
    s2 = pd.Series([10,20,30,40],index = ['a','b','e','f'] )
    s3 = s1 + s2
    print(s3)
    
    a    11.0
    b    22.0
    c     NaN
    d     NaN
    e     NaN
    f     NaN
    dtype: float64
    

    numpy二维数组

    a = np.array([
        [1,2,3,4],
        [5,6,7,8],
        [9,10,11,12]
    ])
    print(a[0,3])#第一行,第四列
    print(a[:,3])#第四列
    print(a[0,:])#第一行
    
    4
    [ 4  8 12]
    [1 2 3 4]
    
    print(a.mean(axis=1))#计算每一行
    print(a.mean(axis=0))#计算每一列
    
    [ 2.5  6.5 10.5]
    [5. 6. 7. 8.]
    

    pandas二维数组

    sales= {
         '购药时间':['2018-01-01 星期五','2018-01-02 星期六','2018-01-06 星期三'],
        '社保卡号':['001616528','001616528','0012602828'],
        '商品编码':[236701,236701,236701],
        '商品名称':['强力VC银翘片','清热解毒口服液','感康'],
        '销售数量':[6,1,2],
        '应收金额':[82.8,28,16.8],
        '实收金额':[69,24.64,15]
    }
    
    from collections import OrderedDict #有序字典
    salesOrderedDict=OrderedDict(sales)
    salesDf = pd.DataFrame(salesOrderedDict)
    salesDf
    
    购药时间社保卡号商品编码商品名称销售数量应收金额实收金额
    02018-01-01 星期五001616528236701强力VC银翘片682.869.00
    12018-01-02 星期六001616528236701清热解毒口服液128.024.64
    22018-01-06 星期三0012602828236701感康216.815.00
    salesDf.mean()
    
    社保卡号    5.388427e+24
    商品编码    2.367010e+05
    销售数量    3.000000e+00
    应收金额    4.253333e+01
    实收金额    3.621333e+01
    dtype: float64
    
    salesDf.iloc[0,1] #iloc利用系统位置索引查找
    
    '001616528'
    
    salesDf.loc[0,'商品编码']#loc利用索引名称查找
    
    236701
    
    salesDf[['商品名称','销售数量']]#切片
    
    商品名称销售数量
    0强力VC银翘片6
    1清热解毒口服液1
    2感康2
    condition=salesDf.loc[:,'销售数量']>1
    condition
    
    0     True
    1    False
    2     True
    Name: 销售数量, dtype: bool
    

    数据分析的应用步骤

    #删除重复值
    #data.drop_duplicates(subset=列名)
    #修改列名 data.rename(columns= )
    #缺失值处理 删除法 data.dropna(subset=列名how=any) 填补法 data.fillna(data.mean())
    #异常值处理 data<data.mean+3*data.std and data.meean()>3*data.std
    #数据类型转换 data.astype(type) =pd.to_datetime(salesDf.loc[:,'销售时间'],format=Y'%Y-%m-%d')
    
    展开全文
  • arr = [ [1, 2, 3], [4, 5, 6], [7, 8, 9] ] 列表推导式 rst = [x for i in arr for x in i] sum rst = sum(arr, []) itertools from itertools import chain ...from functools import reduce
  • python维数组的创建

    2020-12-02 10:32:13
    实际上的二维数组就是二维列表 有两种方法成功创建二维列表 1.直接定义 matrix = [[0, 0, 0], [0, 0, 0], [0, 0, 0]] 简单直接,但是数组过大会被累死的(╥╯^╰╥) 2.间接定义(标准方式) matrix=[[0 for i in ...
  • 想要取出第2的前三个数据,构成新数组(7352, 3, 128, 1) 我的思想是:将第2数据转置(transpose)到第一,再用切片(slice)取出前三个数据,再转置回去: print(# original, input.shape) input_transpose =...
  • 1、数组a第0个元素(二维数组)下的所有子元素(一维数组)的第一列 import numpy as np b=np.arange(24) a=b.reshape(2,3,4) print a print a[0,:,0] 2、取所有二维数组下的每个二维数组的第0个元素(一维数组) ...
  • reshape(shape) : 不改变数组元素,返回一个shape形状的数组,原数组不变。是对每行元素进行处理 resize(shape) : 与.reshape()功能一致,但修改原数组 In [1]: a = np.arange(20) #原数组不变 In [2]: a.reshape...
  • python维数组运算-作业

    千次阅读 2020-02-15 21:07:45
    写一个程序,能够计算xy的二维数组,xy两个值为变量由用户输入 这题我先查了半天啥叫二维数组,原来就是遍历xy两个变量然后把遍历 出来的数逐个相乘,方法一是出题作者提供的,但是我觉的作为一个 入门级的题,代码...
  • 首先认识一下什么是一维数组什么是二维数组: a1 = [1,2,3,4,5,6] a2 = [[1,2,3],[4,5,6],[7,8,9]] print a1[0] print a2[0] 输出结果: 二维数组压缩为一维数组: a = [[1,2,3],[4,5,6],[7,8,9]] c = [] for i ...
  • Python维数组赋值问题

    万次阅读 2018-03-30 15:29:42
    当我们采用s=[[0]*3]*2初始化一个数组,然后对s[0][0]进行赋值,改变的是第一列所有的值。因为用s = [[0]*3]*2 初始化数组,他表示的是指向这个列表的引用,所以当你修改一个值的时候,整个列表都会修改。换一种初始...
  • ptest = np.zeros([4],np.uint64) qtest = np.zeros([3],np.uint64) ###实验表明三维数组作为索引时只取第一个维度吧 print(qtest.shape) ptest[qtest] += 1 print(ptest) 输出结果: (3,) [1 0 0 0]
  • python之多维数组(一)

    万次阅读 多人点赞 2019-08-01 14:17:58
    多维数组ndarray创建方式array()函数empty()函数zeros()函数ones()函数asarray()函数arange()函数...Numpy中定义的最终对象是称为ndarray的N维数组类型。它描述相同类型的元素集合。可以使用基于零的索引访问...
  • 2. 创建一般的多维数组 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 ...
  • 今天小编就为大家分享一篇使用python实现多维数据降维操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • python三维、四维数组相乘

    万次阅读 2016-12-22 17:27:17
    例1,三维数组相乘 import numpy as np a=np.arange(8).reshape([2,2,2]) b=np.arange(8).reshape([2,2,2]) c=a*b 则三维矩阵a、b的两页分别是: a(:,:,1)=b(:,:,1)=(0213)a(:,:,1)=b(:,:,1)=\be
  • numpy库对多维数组有非常灵巧的处理方式,主要的处理方法有: .reshape(shape) : 不改变数组元素,返回一个shape形状的数组,原数组不变 .resize(shape) : 与.reshape()功能一致,但修改原数组 In [22]: a = np.a...
  • 基本思路就是将低维数组进行等长的循环,在第一次为零的情况下,需要添加一个[]数组,原因是将它的基本框架搭建起来 records = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] result = [] for y in range(0, 4): for x ...
  • Python创建二维数组

    2021-01-22 12:54:51
    因一次笔试中忘记如何用python创建二维数组,遂记录下来. 成功没有捷径,一定要脚踏实地. 没有使用numpy模块,若想使用numpy模块创建二维数组请移步。 一:初始化一个元素从0 - n*m的二维数组 row = int(input...
  • Python对多维数组切片

    2019-09-12 13:43:23
    用列表表示数组: aa=[[1, 1, 1], [2, 2, 2], [3, 3, 3], [4, 4, 4], [5, 5, 5], [6, 6, 6], [7, 7, 7], [8, 8, 8]] 如果想提取出前三行的前两列,则可以: import numpy as np aa=[[1, 1, 1], [2, 2, 2], [3, 3, ...
  • #Python# 二维数组的定义、使用的几种方法

    万次阅读 多人点赞 2019-05-16 16:20:36
    #Python# 二维数组的定义、使用的几种方法通常的困扰1、先介绍最简单的一种方式2、再介绍最常见的一种方式3、最后介绍最暴力直观的一种方式 通常的困扰 之前对Python里面创建、使用二维数组也很懵,于是也上网查了...
  • python将一维数组导入到excel表格,并使用excel绘图
  • reshape(shape) : 不改变数组元素,返回一个shape形状的数组,原数组不变。是对每行元素进行处理 resize(shape) : 与.reshape()功能一致,但修改原数组 In [1]: a = np.arange(20) #原数组不变 In [2]: a....
  • import numpy as np n = np.array([[2,1,2,1], [0,-1,3,0], [2,1,-1,4], [1,2,5,7], [2,1,2,1], [0,1,3,0], [2,1,-1,4], [8,7,9,5], [6,3,2,1],
  • #二维数组实现 def FrictionCorrect(Number): """ 修正岸边处的底床摩擦项 """ j = int(Number % nx) i = int((Number - j) / nx) CFx, CFy = 1.0, 1.0 if h[i, j] > DepthThreshold: # 湿单元. if Zb[i ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 28,640
精华内容 11,456
关键字:

python四维数组

python 订阅