精华内容
下载资源
问答
  • 在Python中创建嵌套列表

    千次阅读 2021-02-09 09:27:29
    我正在尝试在Python中创建一个嵌套列表以包含有关视频中的点的信息,并且在创建要保存到结果的数组时遇到了很多麻烦。列表的结构很简单:顶层是对框架的引用,下一层是对标记的引用,最后一层是标记的点。因此,例如...

    我正在尝试在Python中创建一个嵌套列表以包含有关视频中的点的信息,并且在创建要保存到结果的数组时遇到了很多麻烦。列表的结构很简单:顶层是对框架的引用,下一层是对标记的引用,最后一层是标记的点。因此,例如,该列表是这样设置的:

    markerList # a long list of every marker in every frame

    markerList[0] # every marker in the first frame

    markerList[0][0] # the first marker of the first frame

    markerList[0][0][0] # the x value of the first marker of the first frame

    调用markerList [0]如下所示:

    array([[ 922.04443359, 903. ],

    [ 987.83850098, 891.38830566],

    [ 843.27374268, 891.70471191],

    [ 936.38446045, 873.34661865],

    [ 965.52880859, 840.44445801],

    [ 822.19567871, 834.06298828],

    [ 903.48956299, 830.62268066],

    [ 938.70031738, 825.71557617],

    [ 853.09545898, 824.47247314],

    [ 817.84277344, 816.05029297],

    [ 1057.91186523, 815.52935791],

    [ 833.23632812, 787.48504639],

    [ 924.24224854, 755.53997803],

    [ 836.07800293, 720.02764893],

    [ 937.83880615, 714.11199951],

    [ 813.3493042 , 720.30566406],

    [ 797.09521484, 705.72729492],

    [ 964.31713867, 703.246521 ],

    [ 934.9864502 , 697.27099609],

    [ 815.1550293 , 688.91473389],

    [ 954.94085693, 685.88171387],

    [ 797.70239258, 672.35119629],

    [ 877.05749512, 659.94250488],

    [ 962.24786377, 659.26495361],

    [ 843.66131592, 618.83868408],

    [ 901.50476074, 585.42541504],

    [ 863.41851807, 584.4977417 ]], dtype=float32)

    问题在于每个帧都包含不同数量的标记。我想创建一个与markerList长度相同的空数组(即,相同的帧数),其中每个元素的大小与markerList中最大的帧的大小相同。一些重要的警告:首先,我想将结果保存到.mat文件中,其中最终数组(我称为finalStack)是一个单元格单元。其次,我需要能够引用并分配给finalStack的任何特定部分。因此,如果我想将一个点移到finalStack [0] [22],我需要能够做到无冲突。这基本上只是意味着我不能在任何地方使用append方法,但是这也发现了我的第一个问题-找到一种创建finalStack的方法,该方法不会导致每个新的赋值都在整个父列表中重复。一世'

    尝试解决方案:

    继另一个SO问题之后,我尝试迭代创建finalStack,但无济于事。我创建了以下函数:

    def createFinalStack(numMarkers, numPoints, frames):

    step = [[0]*numPoints for x in xrange(numMarkers)]

    finalStack = [step]*frames

    return finalStack

    但是,这将导致所有分配都在父列表中复制,从而使分配finalStack[0][12]指向finalStack[2][12] == finalStack[20][12] == finalStack[0][12]。在此示例中,numMarkers = 40,numPoints = 2(仅x和y)和frame =200。(因此,最终数组应为200 x 40 x2。)

    就是说,这似乎是我想要做的最简单的方法,我只是无法克服复制错误(我知道这是一个参考问题,我只是不知道如何在这种情况下避免它)。

    另一个看似简单的解决方案是使用复制标记copy.deepcopy(markerList),并填充少于40个标记的任何帧,使它们达到numMarkers = 40,然后将其他任何内容清零。但是我想不出一种好方法来循环浏览所有帧,以正确的格式添加点,然后清空其他所有内容。

    如果没有足够的信息来使用,我可以尝试提供更大的上下文以及其他一些根本无法使用的不好的方法。我已经坚持了这么长时间,以至于我确信解决方案非常简单,而我只是想不到显而易见的方法。希望你能证明我正确!

    谢谢!

    解决方案

    这说明了发生了什么:

    In [1334]: step=[[0]*3 for x in range(3)]

    In [1335]: step

    Out[1335]: [[0, 0, 0], [0, 0, 0], [0, 0, 0]]

    In [1336]: stack=[step]*4

    In [1337]: stack

    Out[1337]:

    [[[0, 0, 0], [0, 0, 0], [0, 0, 0]],

    [[0, 0, 0], [0, 0, 0], [0, 0, 0]],

    [[0, 0, 0], [0, 0, 0], [0, 0, 0]],

    [[0, 0, 0], [0, 0, 0], [0, 0, 0]]]

    In [1338]: stack[0]

    Out[1338]: [[0, 0, 0], [0, 0, 0], [0, 0, 0]]

    In [1339]: stack[0][2]=3

    In [1340]: stack

    Out[1340]:

    [[[0, 0, 0], [0, 0, 0], 3],

    [[0, 0, 0], [0, 0, 0], 3],

    [[0, 0, 0], [0, 0, 0], 3],

    [[0, 0, 0], [0, 0, 0], 3]]

    In [1341]: step

    Out[1341]: [[0, 0, 0], [0, 0, 0], 3]

    当您alist*n用来创建新列表时,新列表包含指向同一基础对象的多个指针。通常,*n如果以后打算更改值,则使用复制列表是很危险的。

    相反,如果我制作一个正确尺寸的数组,那么我就不会遇到这个问题:

    In [1342]: np.zeros((4,3,3),int)

    Out[1342]:

    array([[[0, 0, 0],

    [0, 0, 0],

    [0, 0, 0]],

    ...

    [0, 0, 0]]])

    或以列表形式:

    In [1343]: np.zeros((4,3,3),int).tolist()

    Out[1343]:

    [[[0, 0, 0], [0, 0, 0], [0, 0, 0]],

    [[0, 0, 0], [0, 0, 0], [0, 0, 0]],

    [[0, 0, 0], [0, 0, 0], [0, 0, 0]],

    [[0, 0, 0], [0, 0, 0], [0, 0, 0]]]

    如果在此列表中分配一个值,则仅更改一项:

    In [1344]: stack=np.zeros((4,3,3),int).tolist()

    In [1345]: stack[0][2]=3

    In [1346]: stack

    Out[1346]:

    [[[0, 0, 0], [0, 0, 0], 3],

    [[0, 0, 0], [0, 0, 0], [0, 0, 0]],

    [[0, 0, 0], [0, 0, 0], [0, 0, 0]],

    [[0, 0, 0], [0, 0, 0], [0, 0, 0]]]

    我确实应该使用过stack[0][2][1]=3,但是您明白了。如果我以数组形式进行相同的赋值,我最终将更改整行

    In [1347]: stack=np.zeros((4,3,3),int)

    In [1348]: stack[0][2]=3

    In [1349]: stack

    Out[1349]:

    array([[[0, 0, 0],

    [0, 0, 0],

    [3, 3, 3]],

    [[0, 0, 0],

    ...

    [0, 0, 0]]])

    我应该使用类似的表达式stack[0,2,:]=4。

    像这样构造一个三联的下一个列表(所有初始值都是独立的)可能是可能的。但是这种数组方法比较简单。

    展开全文
  • 正如您所发现的那样,np.array会在给定类似内容时尝试创建一个二维数组A = np.array([[1,2],[3,4]],dtype=object)您已应用一些技巧来绕过此默认行为.一种是使子列表的长度可变.它不能从这些数组生成二维数组,所以它...

    正如您所发现的那样,np.array会在给定类似内容时尝试创建一个二维数组

    A = np.array([[1,2],[3,4]],dtype=object)

    您已应用一些技巧来绕过此默认行为.

    一种是使子列表的长度可变.它不能从这些数组生成二维数组,所以它转向对象数组:

    In [43]: A=np.array([[1,2],[],[1,2,3,4]])

    In [44]: A

    Out[44]: array([[1, 2], [], [1, 2, 3, 4]], dtype=object)

    然后,您可以将值附加到每个列表中:

    In [45]: for i in A: i.append(34)

    In [46]: A

    Out[46]: array([[1, 2, 34], [34], [1, 2, 3, 4, 34]], dtype=object)

    np.empty还会创建一个对象数组:

    In [47]: A=np.empty((3,),dtype=object)

    In [48]: A

    Out[48]: array([None, None, None], dtype=object)

    但是,您必须小心如何将元素更改为列表. np.fill很诱人,但有问题:

    In [49]: A.fill([])

    In [50]: A

    Out[50]: array([[], [], []], dtype=object)

    In [51]: for i in A: i.append(34)

    In [52]: A

    Out[52]: array([[34, 34, 34], [34, 34, 34], [34, 34, 34]], dtype=object)

    事实证明,fill会在所有插槽中放置相同的列表,因此修改一个会修改所有其他插槽.您可以通过列表列表获得相同的问题:

    In [53]: B=[[]]*3

    In [54]: B

    Out[54]: [[], [], []]

    In [55]: for i in B: i.append(34)

    In [56]: B

    Out[56]: [[34, 34, 34], [34, 34, 34], [34, 34, 34]]

    初始化空A的正确方法是迭代,例如,

    In [65]: A=np.empty((3,),dtype=object)

    In [66]: for i,v in enumerate(A): A[i]=[v,i]

    In [67]: A

    Out[67]: array([[None, 0], [None, 1], [None, 2]], dtype=object)

    In [68]: for v in A: v.append(34)

    In [69]: A

    Out[69]: array([[None, 0, 34], [None, 1, 34], [None, 2, 34]], dtype=object)

    从问题和评论中有点不清楚是否要附加到列表或将列表追加到数组中.我刚刚演示了附加到列表中.

    有一个np.append函数,新用户经常滥用它.它不能替代列表追加.它是np.concatenate的前端.它不是就地操作;它返回一个新数组.

    定义要添加的列表也很棘手:

    In [72]: np.append(A,[[1,23]])

    Out[72]: array([[None, 0, 34], [None, 1, 34], [None, 2, 34], 1, 23], dtype=object)

    您需要构造另一个对象数组以连接到原始对象,例如

    In [76]: np.append(A,np.empty((1,),dtype=object))

    Out[76]: array([[None, 0, 34], [None, 1, 34], [None, 2, 34], None], dtype=object)

    在所有这些中,列表数组比列表列表更难构建,并且不易操作或更快.你必须使它成为一个列表的二维数组才能获得一些好处.

    In [78]: A[:,None]

    Out[78]:

    array([[[None, 0, 34]],

    [[None, 1, 34]],

    [[None, 2, 34]]], dtype=object)

    您可以重塑,转置等对象数组,其中创建和操作列表列表变得更加复杂.

    In [79]: A[:,None].tolist()

    Out[79]: [[[None, 0, 34]], [[None, 1, 34]], [[None, 2, 34]]]

    ===

    如https://stackoverflow.com/a/57364472/901925所示,np.frompyfunc是一个用于创建对象数组的好工具.

    np.frompyfunc(list, 0, 1)(np.empty((3,2), dtype=object))

    展开全文
  • Java创建数组的方法

    2021-02-12 11:36:54
    Java创建数组的方法大致有三种说明:这里以int为数据类型,以arr为数组名来演示一、声明并赋值int[] arr = {1,2,4, …};注意这里的花括号不是语句块,而且而且花括号后的分号也不能省,…不是元素意思是可以指定多个...

    Java创建数组的方法大致有三种

    说明:这里以int为数据类型,以arr为数组名来演示

    一、声明并赋值

    int[] arr = {1,2,4, …};注意这里的花括号不是语句块,而且而且花括号后的分号也不能省,…不是元素意思是可以指定多个元素

    二、声明数组名开辟空间并且赋值

    int[] arr;arr = new int[]{1,2,3, …};

    三、声明数组时指定元素个数然后赋值

    int[] arr1= new int[3];注意:最大元素下标为2,并且所有的元素值均为0赋值一般用for循环

    四、在以上的基础上创建多维数组

    1.int[][] arr = {{1,2,3},{4,5,6},{7,8,9}};//每个子数组元素个数不要求均相同

    2.int[][] arr = new int[m][n];//其中n可以省略,在创建的时候可以指定

    3.int[][][] arr = new int[m][n][q];//同样其中n、q可以省略

    总结

    ·       无论那种方法声明必须有 :数据类型[ ], 如:int[ ]

    ·       创建多维数组时,new后面的第一个方括号中的元素数量总不能省略

    ·       “new数据类型[]{}”创建数组时,其中花括号可以省去,但要在“[ ]”中填写数组的个数

    各个创建数组的方法使用演示如下

    方法一:

    int[] arr2 = {10,20,30};

    for(int element:arr2) {

    System.out.print(element+"\n");//其中 "\n" 是换行

    }

    输出结果:

    10

    20

    30

    方法二:

    char[] arr4 ;  //char型输入时要用单引号(')引着!

    arr4 = new char[] {'a','b','c'};

    for(char element:arr4) {

    System.out.print(element + "  ");

    }

    输出结果:

    a   b   c

    方法三:

    int[] arr = new int[10];

    //换成i<10 或i<=9   因为 arr[10]不存在  强行调用会出错(溢出)!

    for(int i = 0;i<=9;i++) {

    arr[i]=i;

    System.out.print(arr[i]+"  ");

    }

    输出结果:

    0 1 2 3 4 5 6 7 8 9

    方法四

    1.

    int[][] arr = {{1,2,3},{4,5,6},{7,8,9}};

    矩阵形式输出为:

    1 2 3

    4 5 6

    7 8 9

    1.

    int[][] arr = new int[m][n];

    在赋值时使用for循环

    for(int i=0;i

    for(int j=0;j

    arr[i][j] = int值;

    }

    }

    若声明时省略n,赋值时须在内层循环中生成新一维数组

    for(int i=0;i

    arr[i] = new int[数量];

    }

    二维以上的数组使用的不多,又因为使用方法同二维基本相同,所以在这里就不再演示了。

    内容扩展

    1. for each语句(增强性for循环)

    用于对数组或实现Iterator接口的列表(ArrayList、LinkedList)集合(Set)等容器对象进行遍历。

    格式:

    for (数据类型 : emelent){

    站长博客:http://blog.iis7.com/

    System.out.println(emelent);

    }

    应用代码:

    int[] arr2 = {10,20,30};

    for(int element:arr2) {

    System.out.print(element+"\n");

    }

    运行结果:

    10

    20

    30

    2.length属性 与 length()方法

    二者区别:

    ·       length属性是针对Java中的数组来说的,要求数组的长度可以用其length属性

    ·       length()方法是针对字符串来说的,要求一个字符串的长度就要用Java的length()方法

    ·       Java中的size()方法是针对泛型集合(Set)或列表(List)说的,如果想看这个泛型容器中有多少元素,就调用此方法

    应用代码:

    for(int i=0;i

    arr5[i]=i;

    }

    3.Arrays的toString方法

    作用:将数组的元素生成字符串,数组的各个元素使用方括号括着[ ]格式:Arrays.toString(数组名称)注意:此方法不能用于直接获得二维数组应用代码:

    int[] arr = {111,222,333};

    System.out.println(Arrays.toString(arr));

    ·       、运行结果:

    [111, 222, 333]

    展开全文
  • PYTHON-在循环中创建多个列表

    千次阅读 2021-01-14 17:11:56
    我已经介绍了“数学”部分,但是我需要Python中列表和循环的帮助。我正在处理图表,让我举一个例子,让它更清楚:3 node graph如你所见,我有3个节点和2个边,没什么特别的。我需要计算每对节点之间最近的路由,我...

    我想在我的大学里做一个程序设计项目,但是我卡住了。我已经介绍了“数学”部分,但是我需要Python中列表和循环的帮助。

    我正在处理图表,让我举一个例子,让它更清楚:

    3 node graph

    如你所见,我有3个节点和2个边,没什么特别的。我需要计算每对节点之间最近的路由,我已经讨论过了。现在我需要把它放入n列表中,每个元素都放入n元素中,或者放入n x n元素中,所以:a = [0, 1, 2]

    b = [1, 0, 1]

    c = [2, 1, 0]

    或者一张桌子(或者矩阵?)这样地:

    table 3x3,我只需要白色背景的部分。

    当我读取要处理的数据时,我将每个节点作为一个新元素放入一个列表中,因此通过这3个步骤,我逐渐得到:lw = []

    lw = ['a']

    lw = ['a','b']

    lw = ['a','b','c']

    有没有办法用lw的元素创建空列表?我真的很想给它们起个名字,比如dis a,dis b,dis c等等。我试着用字典来做,但是我不能像通常那样用这些列表来操作。说实话,我更喜欢使用列表的解决方案,因为我已经为这个编写了程序的后一部分。

    编辑:

    好的,你们中的一个要求输入/输出,以使我的问题更清楚。Mmy输入是:lw = ['a','b','c&

    展开全文
  • R语言创建列表

    2021-10-23 11:13:03
    #方法一: a <- list() #最简单~并且没有限制列表的长度 #方法二: a <- vector("list", length = 3) #vector这个函数不光可以生成列表,可以限定长度
  • 创建数值列表需要存储一组数字的原因有很多,例如,在游戏中,需要跟踪每个角色的位置,还可能需要跟踪玩家的几个最高得分。在数据可视化中,处理的几乎都是由数字(如温度、距离、人口数量、经度和纬度等)组成的集合...
  • 是否可以在函数内部创建列表?我有一些命令想合并成一个函数(运行时)。下面的代码可以正常工作并执行我希望它做的事情。我很难把它变成函数。在import numpy as npimport randomnumRounds = 10numTimes = 5final...
  • 在我写这个的方法创建一个字典,然后,当我们把它转换成一个列表时,我们可以对它进行排序以匹配输入顺序。在fruitlist = [('Vendor A', 'Apples'),('Vendor B', 'Apples'),('Vendor C', 'Bananas'),('Vendor A', ...
  • Python列表append()方法

    千次阅读 2020-12-29 06:57:40
    定义两个函数,一个使用extend()方法#!/usr/bin/python# -*- coding: UTF-8 -*-def changeextend(str):"print string with extend"mylist.extend([40,50,60]);print "print string mylist:",mylistreturndef ...
  • 怎么在电脑中创建新用户

    千次阅读 2021-06-24 03:03:45
    怎么在电脑中创建新用户我们在使用电脑的时候,一般是会设置账号并添加密码的,今天小编跟大家分享的是怎么在电脑中创建新用户。具体如下:1. 首先我们打开电脑,然后点击左下方开始图标,在打开的窗口中点击【控制...
  • except IOError: print '*** file open error:' else: fobj.write('\n'+'fangangnang') # 这里的\n的意思是在源文件末尾换行,即加内容另起一行插入。 fobj.close() # 特别注意文件操作完毕后要close input('...
  • Python如何创建相同值的数组/列表

    千次阅读 2020-12-20 16:13:30
    现在有这样的一个需求:创建一个数组或列表列表中的所有值是相同的。 解决方法 找到2中解决方法,第一种是使用Python的基础语法,第二种是借助numpy包提供的函数实现。分别为大家进行介绍。 方法一:使用Python...
  • Java创建List的4种方法

    千次阅读 2021-02-12 09:46:46
    1、通过构造方法,例如:List list = new ArrayList<>();然后调用list.add增加元素,如果知道初始...但是这种方法构造出的List是固定长度的,如果调用add方法增加的元素,会报异常:java.lang.UnsupportedO...
  • 创建新样式有“创建快速样式”和“使用对话框创建样式” 两种方法。创建使用样式的具体操作步骤如下:一、创建样式样式:是指用有意义的名称保存的字符格式和段落格式的集合,这样在编排重复格式时,先创建一个该...
  • Pandas是Python的数据分析利器,DataFrame是Pandas进行数据分析的基本结构,可以把...创建Pandas数据帧的六种方法如下:创建空DataFrame手工创建DataFrame使用List创建DataFrame使用Dict创建DataFrme使用Excel文件创...
  • Python list 常用方法总结

    千次阅读 2021-03-05 22:57:46
    转载的https://www.cnblogs.com/chendai21/p/8125422.html一,创建列表 只要把逗号分隔的不同的数据项使用方括号([ ])括起来即可 ...[] 空列表二,添加的元素list.append() 在list 末尾增加一个元素list.insert(n...
  • python中如何创建新表格

    千次阅读 2021-01-13 18:17:20
    【相关学习推荐:python教程】python中创建新表格的方法:(1)首先调用 add_table 方法,创建 Table 对象table=doc.add_table(rows=1,cols=len(titles))add_table 方法定义为 add_table(rows, cols, style=None)。...
  • Win10系统如何创建和删除本地账户?现在使用Win10系统的朋友...那么接下来小编就来教大家创建和删除Win10本地账户的具体方法,希望大家会喜欢。Win10启用administrator账户首先我们开启下win10中的administrato...
  • linux创建用户命令

    千次阅读 2021-05-09 08:25:51
    创建用户、设置密码、修改用户、删除用户:useradd testuser 创建用户testuserpasswd testuser 给已创建的用户testuser设置密码说明:新创建的用户会在/home下创建一个用户目录testuserusermod --help 修改用户这个...
  • 解决Python使用列表副本的问题

    千次阅读 2021-01-29 12:40:31
    1、使用赋值语法创建列表副本的问题下边就将列表赋值,验证是否形成独立的列表:squares = list(range(1, 11))print('squares原始值为:', end='')print(squares)# 使用列表赋值numbers_squares = s...
  • uniapp组件如何创建如何创建统一应用程序组件,创建uniapp组件的方法:首先,创建一个的组件[。vue]文件;然后创建一个组件文档结构,代码为[/templatescriptordefault { name : ‘ component name ‘,prop : { ...
  • python通关-列表操作方法详解

    万次阅读 多人点赞 2021-01-13 22:54:23
    列表是Python中最基本的数据结构,列表是最常用的Python数据类型,...给列表后面追加的对象 2 list.clear(self) 清空列表中的元素 3 list.copy(self) 浅复制列表 4 list.count(self,value) 统计某个元素在列表
  • 欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是《Python中集合的概念和创建方法详解》。本知识点主要内容有:在Python中集合的概念、在Python中创建集合,包含直接使用“{}”创建集合和使用set()函数...
  • 用命令创建MySQL数据库(de1)的方法

    千次阅读 2021-01-18 19:10:10
    带语言参数导出 mysqldump -uroot -p --default-character-set=latin1 --set-charset=gbk --skip-opt database_name > outfile_name.sql 以上这篇用命令创建MySQL数据库(de1)的方法就是小编分享给大家的全部内容了,...
  • 在NumPy中创建空数组/矩阵的方法

    千次阅读 2021-03-06 01:35:08
    如何在NumPy中创建空数组/矩阵?在添加行的情况下,你最好的选择是创建一个与数据集最终一样大的数组,然后向它添加数据 row-by-row:>>> import numpy>>> a = numpy.zeros(shape=(5,2))>>&...
  • 作者 | 弗拉德来源 | 弗拉德在上一节我们学习了如何创建一个列表,在列表里面插入、删除数据等操作。本节我们学习如何管理列表。遍历列表在日常开发中,我们经常需要遍历列表的所有元素,对每个元素执行相同的操作。...
  • 新建C语言项目 启动VS2019后,选择“创建新项目” 再新的界面选择“空项目” 在新界面设置自己的项目名称(一般尽量不使用中文),选择保存位置。 完成后点击界面右下角“创建”。 进入编程界面后找到①解决方案资源...
  • 将两个列表中的元素一一对应转化为字典的方法 问题:有两个列表,li_1 和 li_2,他们长度一样,元素的内容一一对应,现在需要将其转化为键值对的表现形式,怎么解决? li_1 = [‘name’, ‘author’, ‘introduce’]...
  • 作者主页(文火冰糖的硅基工坊):... ... 目录 第1部分前置条件 1.1 导入库及检查版本 1.2 Hello World ...1.3 创建Tensor的方法分类 第2章常量Tensor 2.1 tf.constant(value, dtype=None, shape=None, name='Co...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,006,499
精华内容 402,599
关键字:

创建新列表的方法