相关疑难解决方法(0)

list [x :: y]做什么?

可能重复:
Python Slice表示法的好入门

我最近一直在阅读一些示例代码并且我已经阅读了不少网站,但我似乎无法正确查询我给出的答案我正在寻找.如果有人能帮助我,我会很感激.

python syntax

23
推荐指数
2
解决办法
6万
查看次数

使用h5py对hdf5进行增量写入

我有一个关于如何使用python/h5py最好地写入hdf5文件的问题.

我有以下数据:

-----------------------------------------
| timepoint | voltage1 | voltage2 | ...
-----------------------------------------
| 178       | 10       | 12       | ...
-----------------------------------------
| 179       | 12       | 11       | ...
-----------------------------------------
| 185       | 9        | 12       | ...
-----------------------------------------
| 187       | 15       | 12       | ...
                    ...
Run Code Online (Sandbox Code Playgroud)

大约10 ^ 4列,大约10 ^ 7行.(大约10 ^ 11(1000亿)个元素,或者~100GB,1个字节的整数).

使用这些数据,典型的使用几乎是一次写入,多次读取,典型的读取案例是获取第1列和另一列(比如254),将两列加载到内存中,并做一些奇特的统计.

我认为一个好的hdf5结构将使上表中的每列都是hdf5组,从而产生10 ^ 4组.这样我们就不需要将所有数据都读入内存了,是吗?hdf5结构虽然尚未定义,但它可以是任何东西.

现在的问题是:我一次收到~10 ^ 4行的数据(并且每次都没有完全相同的行数),需要将其逐步写入hdf5文件.我该怎么写这个文件?

我正在考虑python和h5py,但如果推荐的话可以使用其他工具.正在进行分组,例如

dset = f.create_dataset("voltage284", (100000,), maxshape=(None,), dtype='i8', chunks=(10000,))
Run Code Online (Sandbox Code Playgroud)

然后当另一个10 ^ 4行的块到达时,替换数据集?

或者将每个10 ^ 4行的块存储为单独的数据集更好?或者我真的需要知道最后的行数吗?(这很难获得,但也许可能).

我可以保释hdf5,如果它也不是适合这项工作的工具,不过我认为一旦尴尬的写作完成,它就会很精彩.

python hdf5 h5py

23
推荐指数
2
解决办法
2万
查看次数

Python中"int(a [:: - 1])"的含义是什么?

我不明白这.我在人们的代码中看到了这一点.但无法弄清楚它的作用.这是在Python中.

str(int(a[::-1]))
Run Code Online (Sandbox Code Playgroud)

python python-2.7 python-3.x

22
推荐指数
2
解决办法
5万
查看次数

Python:根据索引范围将列表拆分为子列表

更新:

在python中,如何根据索引范围将列表拆分为子列表

例如原始清单:

list1 = [x,y,z,a,b,c,d,e,f,g]
Run Code Online (Sandbox Code Playgroud)

使用索引范围0 - 4:

list1a = [x,y,z,a,b]
Run Code Online (Sandbox Code Playgroud)

使用索引范围5-9:

list1b = [c,d,e,f,g]
Run Code Online (Sandbox Code Playgroud)

谢谢!

我已经知道包含某些字符串的列表元素的(变量)索引,并希望根据这些索引值拆分列表.

还需要拆分成可变数量的子列表!即:

list1a
list1b
.
.
list1[x]
Run Code Online (Sandbox Code Playgroud)

python indexing list

19
推荐指数
3
解决办法
8万
查看次数

从左到右解压缩Python元组?

是否有一个干净/简单的方法从右到右从右侧解压缩Python元组?

例如

j = 1,2,3,4,5,6,7

(1,2,3,4,5,6,7)

v,b,n = j[4:7] 
Run Code Online (Sandbox Code Playgroud)

我可以修改切片表示法v = j[6], b=j[5], n=j[4]吗?

我意识到我可以命令左侧获得所需的元素,但可能存在我只想从左到右解包元组的情况.

python tuples python-3.x iterable-unpacking

19
推荐指数
4
解决办法
2114
查看次数

在Numpy图像中查找子图像

我有两个从PIL图像转换的Numpy数组(3维uint8).

我想查找第一个图像是否包含第二个图像,如果是,请找出匹配所在的第一个图像内左上角像素的坐标.

有没有办法在Numpy中以足够快的方式完成这个,而不是使用(4!非常慢)纯Python循环?

2D示例:

a = numpy.array([
    [0, 1,  2,  3],
    [4, 5,  6,  7],
    [8, 9, 10, 11]
])
b = numpy.array([
    [2, 3],
    [6, 7]
])
Run Code Online (Sandbox Code Playgroud)

怎么做这样的事情?

position = a.find(b)
Run Code Online (Sandbox Code Playgroud)

position那会是(0, 2).

python numpy image python-imaging-library

18
推荐指数
2
解决办法
1万
查看次数

实现python切片表示法

我正在尝试用另一种语言(php)重新实现python 切片表示法,并寻找一个模仿python逻辑的片段(任何语言或伪代码).也就是说,给定列表及其三个(start, stop, step)或一部分,确定所有参数的正确值或默认值,并将切片作为新列表返回.

我试着查看来源.该代码远远超出我的技能,但我不禁同意评论说:

/* this is harder to get right than you might think */ 
Run Code Online (Sandbox Code Playgroud)

此外,如果这样的事情已经完成,指针将非常感激.

这是我的测试平台(确保您的代码在发布前通过):

#place your code below
code = """
def mySlice(L, start=None, stop=None, step=None):
or 
<?php function mySlice($L, $start=NULL, $stop=NULL, $step=NULL) ...
or 
function mySlice(L, start, stop, step) ...
"""

import itertools

L = [0,1,2,3,4,5,6,7,8,9]

if code.strip().startswith('<?php'):
     mode = 'php'

if code.strip().startswith('def'):
     mode = 'python'

if code.strip().startswith('function'):
     mode = 'js'

if mode == 'php':
    var, none = '$L', …
Run Code Online (Sandbox Code Playgroud)

php python arrays algorithm language-comparisons

18
推荐指数
1
解决办法
1613
查看次数

在python中将切片转换为范围

我正在使用python3.3.我想获得一个slice对象并使用它来创建一个新range对象.

它是这样的:

>>> class A:
    def __getitem__(self, item):
        if isinstance(item, slice):
            return list(range(item.start, item.stop, item.step))

>>> a = A()
>>> a[1:5:2] # works fine
[1, 3]
>>> a[1:5] # won't work :(
Traceback (most recent call last):
  File "<pyshell#18>", line 1, in <module>
    a[1:5] # won't work :(
  File "<pyshell#9>", line 4, in __getitem__
    return list(range(item.start, item.stop, item.step))
TypeError: 'NoneType' object cannot be interpreted as an integer
Run Code Online (Sandbox Code Playgroud)

嗯,这个问题很明显 - range不接受None作为一个值:

>>> range(1, 5, …
Run Code Online (Sandbox Code Playgroud)

python range slice python-3.x

18
推荐指数
4
解决办法
6810
查看次数

扩展切片语法实际上对负步骤有什么作用?

python中的扩展切片语法已经向我解释为" a[n:m:k] returns every kth element from n to m".

这让我很清楚当k为正时会发生什么.但是我对如何解释a[n:m:k]负面k 感到迷茫.我知道这会a[::-1]颠倒一个,并且这a[::-k]需要反转a的第k个元素.

但这是对k正定义的概括呢?我想知道a[n:m:k]实际上是如何定义的,所以(例如)我可以理解为什么:

"abcd"[-1:0:-1] = "dcb"
Run Code Online (Sandbox Code Playgroud)

是否正在a[n:m:-k]逆转序列a,然后从m开始,在m之前从一个原始索引开始,然后结束一个?我不这么认为,因为这种模式不适合我尝试过的其他n和m值.但我无法弄清楚这是如何实际定义的,搜索让我无处可去.

python list syntactic-sugar slice

18
推荐指数
2
解决办法
1万
查看次数

将列表从一个索引排序到另一个索引 - python

假设我有一个列表[2, 4, 1, 3, 5]

我想将列表从索引 1 排序到末尾,这给了我 [2, 1, 3, 4, 5]

我怎么能用python3做到这一点?

(没有额外的空间将不胜感激)

编辑:

我已将切片声明为已接受的答案。Python 仅复制对象引用,因此与真正的就地排序相比,速度损失不会那么大。但是如果你需要一个非常严格的解决方案,你可以参考@Heap Overflow 上我最喜欢的答案之一

>>> tmp = l[0]
>>> l[0] = float('-inf')
>>> l.sort()
>>> l[0] = tmp
>>> l
[2, 1, 3, 4, 5]
Run Code Online (Sandbox Code Playgroud)

python sorting

18
推荐指数
3
解决办法
1283
查看次数