小编Bi *_*ico的帖子

Numpy花哨索引和分配

通常numpy强制分配的左侧和右侧匹配,因此,例如,如果我这样做a[:] = b,b必须是相同的形状或广播到相同的形状a.但该规则似乎有例外:

>>> a = np.arange(10)
>>> a
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> b = a.copy()
>>> a[[0,1,2]] = b[::2]
>>> a
array([0, 2, 4, 3, 4, 5, 6, 7, 8, 9])
>>> a[np.arange(10)] = b[:2]
>>> a
array([0, 1, 0, 1, 0, 1, 0, 1, 0, 1])
Run Code Online (Sandbox Code Playgroud)

它似乎只适用于1d数组,并且只有在赋值的左侧有花哨的索引,但我无法在任何地方找到此行为的文档.是否记录了这种行为,如果有的话,还有人可以举例说明它何时有用?

更新:

看起来numpy flatiter类型的行为也是这样,flatiter和fancy indexing之间是否存在一些我不知道的联系?

>>> a.flat = [10,11]
>>> a
array([10, 11, 10, 11, 10, 11, 10, 11, …
Run Code Online (Sandbox Code Playgroud)

python indexing numpy

12
推荐指数
1
解决办法
1607
查看次数

为什么切片对象在python中不可散列

为什么python中的切片对象不可清除:

>>> s = slice(0, 10)
>>> hash(s)
TypeError                                 Traceback (most recent call last)
<ipython-input-10-bdf9773a0874> in <module>()
----> 1 hash(s)

TypeError: unhashable type
Run Code Online (Sandbox Code Playgroud)

他们似乎是不可改变的:

>>> s.start = 5
TypeError                                 Traceback (most recent call last)
<ipython-input-11-6710992d7b6d> in <module>()
----> 1 s.start = 5

TypeError: readonly attribute
Run Code Online (Sandbox Code Playgroud)

上下文,我想创建一个将python int或slice对象映射到某些值的字典,如下所示:

class Foo:
   def __init__(self):
       self.cache = {}
   def __getitem__(self, idx):
       if idx in self.cache:
           return self.cache[idx]
       else:
           r = random.random()
           self.cache[idx] = r
           return r
Run Code Online (Sandbox Code Playgroud)

作为一种解决方法,我需要特殊的案例切片:

class Foo:
   def __init__(self):
       self.cache = {} …
Run Code Online (Sandbox Code Playgroud)

python

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

暂时解压缩文件的最佳(最"pythonic")方式

我需要暂时创建一些文件的解压缩版本.我见过人们zcat somefile.gz > /tmp/somefile用bash 做的,所以我在python中创建了这个简单的函数:

from subprocess import check_call
def unzipto(zipfile, tmpfile):
    with open(tmpfile, 'wb') as tf:
        check_call(['zcat', zipfile], stdout=tf)
Run Code Online (Sandbox Code Playgroud)

但是使用zcat和check_call对我来说似乎很苛刻,我想知道是否有更多的"pythonic"方法来做到这一点.

谢谢你的帮助

python gzip

7
推荐指数
2
解决办法
2873
查看次数

在 Android VideoView 中播放没有 RTSP 的 RTP 流

我想在 Android VideoView 中播放 RTP 流。我在 Linux 机器上使用 gstreamer 创建流并将 rtp 流发送到 udp 接收器。

是否可以在没有 RTSP 服务器的情况下在 Android VideoView 中使用此流?

我尝试将视频 URI 设置为“rtp://:@”,但随后出现错误“无法播放视频”。我还考虑过创建一个 SDP 文件并在 Android 设备上使用它。但我不确定这是否有效以及如何创建这样的文件。

谢谢

android rtp gstreamer android-videoview

5
推荐指数
1
解决办法
2200
查看次数

类构造函数应该返回一个子类吗?

类构造函数应该返回一个子类吗?

这主要是关于OOP风格和python风格的问题.我有问题需要实现一般案例解决方案,出于性能原因,我需要为特定输入类型实现优化解决方案.输入类型取决于用户.目前,我已经通过对一般案例解决方案进行子类化来实现这一目标,以制定优化的解决方案.我想出了以下示例来帮助描述我的意思.

from collections import Counter

class MyCounter(object):
    """General Case Counter"""
    def __init__(self, seq):
        self.seq = seq

    def count(self, key):
        return sum(key == item for item in self.seq)


class OptimizedCounter(MyCounter):
    """Counter optimized for hashable types"""
    def __init__(self, seq):
        self.counter = Counter(seq)

    def count(self, key):
        return self.counter.get(key, 0)

counter = MyCounter(['a', 'a', 'b', [], [0, 1]])
counter.count([0, 1])
# 1

counter = OptimizedCounter(['a', 'a', 'b'])
counter.count('a')
# 2
Run Code Online (Sandbox Code Playgroud)

我的问题是如何设计一个流畅的界面,以便用户获得一个合适的实例,而不必担心它是如何实现的.我考虑过做类似下面的事情,但这对我来说很难看.是否有更规范或OOP的方式来做这样的事情?

class MyCounter(object):
    """General Case Counter"""
    def __new__(cls, seq):
        if hasOnlyHashables(seq):
            return object.__new__(OptimizedCounter) …
Run Code Online (Sandbox Code Playgroud)

python oop coding-style

4
推荐指数
1
解决办法
1257
查看次数

从numpy.argmax结果中提取numpy数组切片

我有一个(3,3)numpy数组,想要找出绝对值最大的元素的符号:

X = [[-2.1,  2,  3],
     [ 1, -6.1,  5],
     [ 0,  1,  1]]

s = numpy.argmax(numpy.abs(X),axis=0) 
Run Code Online (Sandbox Code Playgroud)

给了我需要的元素的索引s = [ 0,1,1].

如何使用此数组提取元素[ -2.1, -6.1, 5]以找出其符号?

python numpy

4
推荐指数
1
解决办法
1171
查看次数