精华内容
下载资源
问答
  • Python从可长度数组刷新Pyplot线
    2021-01-29 15:27:12

    我肯定有人问过这个问题,但我一直很难找到一个简明的答案,在搜索中起作用。一些好的答案似乎取决于提前计算数组的最终大小。看起来这应该很简单,而且我是个新手,所以我可能只是搜索了错误的术语。。。在

    我的问题是:

    当数组长度未知且随时间变化时,如何让PyPlot刷新源于numpy数组的现有行的数据?

    我现在的代码如下#Initial Setup

    changing_dataset = np.array(1) #initialize with a single blank y-value

    plt.close('all') #clear all the priors

    plt.ion()

    f, axarr = plt.subplots(3,2) #setup a 3x2 plot ...only 1 shown below

    axarr[0,0].set_title('My Plot')

    line1, = axarr[0,0].plot(changing_dataset)

    plt.show

    ... some code which appends new data to changing_dataset is omitted here...

    我只想这么做:

    ^{pr2}$

    为了更新初始绘图中的行,现在将基于数组“changing_dataset”中包含的新的、更大的数据集。在

    但这会产生一个错误

    值错误:形状不匹配:对象不能广播到单个形状

    如何避开似乎需要数组为静态大小的要求?我宁愿不需要重新命名和从头开始构建绘图-因为唯一需要更改的是线条(可能还会自动重新缩放轴)

    更多相关内容
  • 123456789101112a = [[],[],[]]b = [[]] * 3a[1].append(5)b[1].append(5)print(a)print(b)#输出[[],[5],[]][[5],[5],[5]]为什么用 []乘以常数 的方式自定义长度数组会出现这样的问题?难道这种方式定义的数组里的...

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12a = [[],[],[]]

    b = [[]] * 3

    a[1].append(5)

    b[1].append(5)

    print(a)

    print(b)

    #输出

    [[],[5],[]]

    [[5],[5],[5]]

    为什么用 []乘以常数 的方式自定义长度数组会出现这样的问题?

    难道这种方式定义的数组里的所有元素共用一个指针或者是互相引用?

    bVs2oq

    如图,

    1*

    的作用是相当于复制,b中的元素都指向的是同一个地址。这是从图中可以看出的,但是,我也希望找到相关文档可以参考一下原理。

    a 的赋值相当于:

    a1 = []

    a2 = []

    a3 = []

    a = [a1, a2, a3]

    b 的赋值相当于:

    b1 = []

    b = [b1,b1,b1]

    是得,所有元素都是由

    1b[0]

    复制而来,它们和

    1b[0]

    是同一个对象

    可以用

    1b = [[] for _ in range(3)]

    类似于浅拷贝,

    1[[]] * 3

    列表里面的对象只是多了一次引用而已,指向的同一个对象,如下:

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14In [1]: a = []

    In [2]: import sys

    In [3]: sys.getrefcount(a) # 计算引用数目

    Out[3]: 2

    In [4]: s = [a] * 3

    In [5]: sys.getrefcount(a)

    Out[5]: 5

    In [6]: map(id, s)   #内存地址都一样。

    Out[6]: [140654381750824, 140654381750824, 140654381750824]

    这个涉及到 mutable(可改)与 immutable(不可改) 的问题。

    python 对象中除了字符串,数字,元组为 immutable 以外,其他均为 mutable。

    对于 mutable(可改的) 的对象在复制时,实际上复制其指针(引用)。并没有重新创建一个对象。

    而 imutable(不可改) 的对象在复制时,才会重新创建一个新的值。

    1b = [[]] * 3

    这段代码实际上对同一个 [] 空列表对象复制了三次。

    b[1].append(5) 虽然只改变了元素1,而元素2,元素0 是和元素1是相同的元素。

    Python 一切皆对象,而任何对象都具有 ID(值的地址), 类型, 值 这三个属性:

    对于

    1c = [[]]

    ,c 内相当于只生成了一个对象,也即

    1c[0]

    ,因此

    1c[0]

    只会有一个值([None])的 ID.

    对于

    1d = [[], []]

    ,d 内相当于生成了两个对象

    1d[0], d[1]

    ,至于两个对象值是否相等,对于列表这样的可变对象 python 解释器都不会去管,而会一视同仁的分别分配一个值 ID 给同值对象,因此

    1d

    内的两个对象其实分别有一个值的ID.

    对于

    1b = [[]]*3

    这样的操作,

    1*

    号只管一字不差的复制 b 内元素

    1b[0]

    ,而非

    1b[0][0]

    ,并生成两个新对象

    1b[1]、b[2]

    ,至于要不要给

    1b[1]、b[2]

    开辟等同于

    1b[0][0]

    值的ID,

    1*

    号根本不管;因为那是

    1b[0]

    的属性,而不是

    1b

    的。因此,

    1b = [[]]*3

    虽然复制出三个独立的

    1b

    内对象

    1b[0]\b[1]\b[2]

    ,但后两个对象的值的引用其实都是照抄

    1b[0]

    的,因此完全指向同一个值 ID.(相当于浅复制)。

    再回到你的问题:

    1

    2

    3

    4

    5

    6

    7

    8a = [[], [], []]

    # 这种赋值方式,a 内的三个对象是相互独立,值也是各自独立互不干扰的;

    b = [[]]*3

    # 这种赋值方式,b内元素相互独立,但三个对象值的 ID 是完全一样的;

    b[1].append(5)

    # 其会改写 b[1] 对应的 ID 下的值,因此会影响到 b[0],b[2]

    a[1].append(5)

    # 由于 a[1] 的ID 未与其他兄弟元素共享,因此不会影响 a[0],a[2]

    展开全文
  • 我使用PyTables 2.2.1 w /Python 2.6,我想创建一个包含可长度的嵌套数组的表.我已经搜索了PyTables文档,教程示例(PyTables Tutorial 3.8)显示了如何创建一个length = 1的嵌套数组.但是在这个例子中,我将如何向数据...

    我使用PyTables 2.2.1 w /

    Python 2.6,我想创建一个包含可变长度的嵌套数组的表.

    我已经搜索了PyTables文档,教程示例(PyTables Tutorial 3.8)显示了如何创建一个length = 1的嵌套数组.但是在这个例子中,我将如何向数据“info2 / info3 / x”添加一个可变数量的行, ‘INFO2 / INFO3 / Y’?

    为了可能更容易理解的表格结构,这里是我自己的例子:

    """Desired Pytable output:

    DIEM TEMPUS Temperature Data

    5 0 100 Category1 Category2

    x y z

    0 0 0

    2 1 1

    4 1.33 2.67

    6 1.5 4.5

    8 1.6 6.4

    5 1 99

    2 2 0

    4 2 2

    6 2 4

    8 2 6

    5 2 96

    4 4 0

    6 3 3

    8 2.67 5.33

    Note that nested arrays have variable length.

    """

    import tables as ts

    tableDef = {'DIEM': ts.Int32Col(pos=0),

    'TEMPUS': ts.Int32Col(pos=1),

    'Temperature' : ts.Float32Col(pos=2),

    'Data':

    {'Category1':

    {

    'x': ts.Float32Col(),

    'y': ts.Float32Col()

    },

    'Category2':

    {

    'z': ts.Float32Col(),

    }

    }

    }

    # create output file

    fpath = 'TestDb.h5'

    fh = ts.openFile(fpath, 'w')

    # define my table

    tableName = 'MyData'

    fh.createTable('/', tableName, tableDef)

    tablePath = '/'+tableName

    table = fh.getNode(tablePath)

    # get row iterator

    row = table.row

    for i in xrange(3):

    print '\ni=', i

    # calc some fake data

    row['DIEM'] = 5

    row['TEMPUS'] = i

    row['Temperature'] = 100-i**2

    for j in xrange(5-i):

    # Note that nested array has variable number of rows

    print 'j=', j,

    # calc some fake nested data

    val1 = 2.0*(i+j)

    val2 = val1/(j+1.0)

    val3 = val1 - val2

    ''' Magic happens here...

    How do I write 'j' rows of data to the elements of

    Category1 and/or Category2?

    In bastardized pseudo-code, I want to do:

    row['Data/Category1/x'][j] = val1

    row['Data/Category1/y'][j] = val2

    row['Data/Category2/z'][j] = val3

    '''

    row.append()

    table.flush()

    fh.close()

    我没有在PyTables文档中找到任何这样的结构是不可能的,但是如果这样的结构实际上是不可能的,那么我可以替代可变长度嵌套列的是什么?

    > EArray? VLArray?如果是,如何将这些数据类型整合到上述结构中?

    >其他一些想法?

    任何帮助非常感谢!

    编辑附加信息:

    似乎PyTables大师已经解决了“是这样一个可能的结构”问题:

    所以有人想出了一种创建类似PyTable数据结构的方法?

    再次感谢!

    展开全文
  • 是否可以初始化一个可以保持字符串的numpy recarray,而不知道字符串的长度呢?作为(设计)的例子:mydf = np.empty( (numrows,), dtype=[ ('file_name','STRING'), ('file_size_MB',float) ] )问题是我正在使用信息...

    是否可以初始化一个可以保持字符串的numpy recarray,而不知道字符串的长度呢?

    作为(设计)的例子:

    mydf = np.empty( (numrows,), dtype=[ ('file_name','STRING'), ('file_size_MB',float) ] )

    问题是我正在使用信息填充我的重组,而且我不一定需要事先知道file_name的最大长度.

    我所有的尝试导致字符串字段被截断:

    >>> mydf = np.empty( (2,), dtype=[('file_name',str),('file_size_mb',float)] )

    >>> mydf['file_name'][0]='foobarasdf.tif'

    >>> mydf['file_name'][1]='arghtidlsarbda.jpg'

    >>> mydf

    array([('', 6.9164002347457e-310), ('', 9.9413127e-317)],

    dtype=[('file_name', 'S'), ('file_size_mb', '

    >>> mydf['file_name']

    array(['f', 'a'],

    dtype='|S1')

    (除此之外,mydf [‘file_name’]为什么显示’f’和’a’,而mydf显示”和”?

    类似地,如果我用type(say)| S10为file_name初始化,那么事情将被截断为10.

    我可以找到的唯一类似的问题是 this one

    ,但是这是先验计算适当的字符串长度,因此与我不一样(因为我事先知之甚少).

    除了使用(例如)| S9999999999999(即一些可笑的上限)启动file_name,还有其他替代方法?

    展开全文
  • python数组长度

    千次阅读 2020-11-22 21:49:09
    python返回数组(list)长度的方法array = print len(array)...如何查找二维数组中有多少行和列? 例如, input = (, , ])` 应显示为3行和2列...所以我在python中实现了一个块交换算法。 我遵循的算法是这样的:初始...
  • 以前写过一篇:python实现把两个二维array叠加成三维array示例 这篇文章尝试用“曲线救国”的方法来解决二维数组叠加成三维数组的问题。 但天道有轮回,苍天绕过谁。好不容易把数组叠加在一块儿了,新的需求又出现了...
  • Python中的数组

    2021-04-27 01:53:33
    可以理解为Python中的list对应为其它与语言中的可变数组,而tuple对应为不可变数组。不可指的是不能对里面的元素进行增加、删除、修改、排序、倒序等操作。下面会依依介绍到它俩:List初始化Python中的列表用方...
  • python怎么定义数组

    千次阅读 2021-01-11 19:23:50
    原标题:python怎么定义数组Python中没有数组的数据结构,但列表很像数组,如:a=[0,1,2],这时a[0]=0, a[1]=1, a[[2]=2,但引出一个问题,即如果数组a想定义为0到999怎么办?这时可能通过a = range(0, 1000)实现。或...
  • Python中的列表(list)类似于C#中的可变数组(ArrayList),用于顺序存储结构。   创建列表   复制代码 代码如下:sample_list = [‘a’,1,(‘a’,’b’)]   Python 列表操作 复制代码 代码如下:sample_list = [...
  • 在C++中调用python时,传递大型数组是一个大问题,目前网上并没有给出靠谱而且简便的方法。在我跟boost.python的开发者沟通后给出了以下解决方案:环境配置方法:解压boost文件,在其目录中执行.\bootstrap.bat,会...
  • python怎么输入数组

    千次阅读 2021-03-18 11:42:54
    python 语言如何手动输入一个数组手动定义一个空数组:arr =[],链表数组:a = [1,2,[1,2,3]]。 Python, 是一种面向对象的解释型计算机程序设计语言,由荷兰人Guido van Rossum于1989年发明,第一个公开发行版发行于...
  • 今天小编就为大家分享一篇在python中创建指定大小的多维数组方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • python 二维数组转一维数组

    千次阅读 2021-04-27 05:33:12
    避免python二维列表append一维列表时浅拷贝问题原始问题: 由于浅拷贝原因,使得当a列表变动时,b列表也发生变动 解决办法: 如上图所示,添加的时候添加新列即可,类似新建一个列表,使得与原有列表a不共用同一个内存多维...
  • python 初始化一个定数组实例

    千次阅读 2020-12-05 01:23:19
    python 初始化一个定数组实例​# 有时候我们提前知道了一个数组的大小,需要给每个元素赋值,此时append好像不管用。我们需要定义一个定# # 数组python中代码如下:b = [0 for _ in range(10)] #也可以b =...
  • 但是由于列表可能会得非常大,而不是在内存中移动整个列表,所以Python选择只使用引用(C术语中的“指针”)。如果将一个指定给另一个变量,则只指定对它的引用。这意味着您可以让两个变量指向内存中的同一列表:>...
  • Python 列表 list 数组 array

    千次阅读 2020-11-26 11:08:28
    Python中的列表(list)类似于C#中的可变数组(ArrayList),用于顺序存储结构。创建列表sample_list = ['a',1,('a','b')]Python 列表操作sample_list = ['a','b',0,1,3]得到列表中的某一个值value_start = sample_...
  • Python中低维数组填充高维数组的实现今天遇到这样一种业务情况:我的图片的画布是(4,4,3)的三维数组,而得到的图片是(2,2,3)的三维数组,我要把图片放到画布的中间某个位置应该怎么做呢?大家首先想到是遍历循环,...
  • python 变量,数组,字符串

    千次阅读 2020-12-03 22:30:05
    python下变量是对一个数据的引用变量的命名变量名由字母,数字,下划线组成变量不能用数字开头不可以使用关键字变量的赋值是变量的申明和定义的过程a = 1 #整型a = ‘1‘ #字符型id(a)type(a) #可以查看变量的类型...
  • python没有数组

    2020-11-29 13:14:45
    感悟: 1.python列表操作里不允许变量类型的指针2.case1类似于冒泡排序操作,这个是满足题目要求的,但是为了将所有的非空数组并起来,就有case2的情况,只不过修改一行代码3. 为了列表操作方面,使用了delete来移动...
  • 文章目录定长数组变长数组增删改元素遍历数组数组常用算法 定长数组 特点: 1.长度可变 2.内容不可变 语法格式: 1.通过指定长度定义数组 val/var 变量名 = new Array[元素类型](数组长度) 2.通过指定元素...
  • 原来一开始的时候大伙都是一样的,当有一个不一样的时候就出去 n = 2 a = [[0 for _ in range(n)] for _ in range(n)] a[0][0] = 1 print(id(a[0][0])) print(id(a[0][1])) print(id(a[1][0])) print(id(a[1][1])) ...
  • Python集合(数组

    千次阅读 2020-12-17 22:48:43
    Python编程语言中有四种集合数据类型:列表(list):是一种有序和可更改的集合,允许有重复成员的元组(tuple):是一种有序且不可更改的集合,允许有重复成员的集合(set):是一个无序和无索引的集合,没有重复成员的。...
  • Python对numpy数组进行变形

    千次阅读 2020-01-01 00:23:58
    在用numpy时候,经常需要对数组进行维度的转换、...创建一个Python numpy数组 使用np.arange()生成一个numpy数组,其中包含从1到12的数字序列: import numpy as np a1 = np.arange(1, 13) # numbers 1 to 12 prin...
  • python定义数组

    千次阅读 2020-11-21 04:07:26
    一、一维数组 1. 直接定义matrix=2. 间接定义matrix=print(matrix)输出:3. 数组乘法matrix=*5print(matrix)输出:二、二维数组 1. 直接定义(3*2)matrix=,]2. 间接定义(3*2)matrix= for i in ra...
  • 字典是一个无序、可和有索引的集合。在 Python 中,字典用花括号编写,拥有键和值。 格式: dict = {key:value,key:value.....} 空字典: {} dict() 字典的增、删、改、查 ser = {"name":"张","age":20} # 通过...
  • python之多维数组(二)

    千次阅读 2019-08-01 16:51:19
    多维数组ndarray访问、修改字段访问、基本切片高级索引Numpy算数运算Numpy矩阵积Numpy广播 ndarray访问、修改 ndarray对象的内容可以通过索引或者切片来访问和修改,就像python的内置容器对象一样。 ndarray对象中的...
  • python数组

    千次阅读 2020-12-12 10:00:22
    arange 是基于Python原版range函数改进的数组版本。 array 将输入的数据(可以是列表、元组、数组、其他的序列数组)转换为Numpy的ndarray。要是不指定dtype,那么就由该方法推断出dtype。默认直接复制数据。 as...
  • python读入数组

    2020-11-23 14:42:49
    我想设计一个循环来迭代目录中的每个文件,并将数据放入每个文件的2d数组中。 我有一个.txt文件的大目录,每行包含22行2个数字。 文件内容如何组织的一个例子是:# start of file_1.txt1 23 45 67 8 # start of file...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 62,477
精华内容 24,990
关键字:

python变长数组