小编Yuv*_*mon的帖子

从numpy中的矩阵中提取唯一的行,其中包含创建的每一行的频率

关于以下问题的后续问题:

如何在Python中使用MATLAB中的唯一(a,'rows')?

那里的答案解释了如何获得唯一的行.然而,matlab还返回创建的每一行的频率.用python做任何优雅的方式吗?

谢谢!

python numpy unique matrix scipy

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

python 与 matlab 中的矩阵切片

在使用 MATLAB 用户多年后,我现在正在迁移到 python。

我尝试找到一种简洁的方式来简单地用 python 重写以下 MATLAB 代码:

s = sum(Mtx);
newMtx = Mtx(:, s>0);
Run Code Online (Sandbox Code Playgroud)

其中 Mtx 是二维稀疏矩阵

我的Python解决方案是:

s = Mtx.sum(0)
newMtx = Mtx[:, np.where((s>0).flat)[0]] # taking the columns with nonzero indices
Run Code Online (Sandbox Code Playgroud)

其中 Mtx 是 2D CSC 稀疏矩阵

python代码不像matlab那样可读/优雅..知道如何更优雅地编写它吗?

谢谢!

python matlab matrix slice

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

基于 Python 文件的队列是进程安全的

是否有进程安全的持久(基于磁盘)Python FIFO 队列?

有人可以提供一个简单的示例,其中包含一个将字符串写入队列的脚本,以及另一个从队列中一次读取一个字符串的脚本吗?请注意,每个进程都可以从命令行启动多次。即多个作者和多个读者。

背景:我有几个脚本,每个脚本每隔一段时间就会产生一些输出。我想了解他们创建的输出,并使用另一个脚本来处理他们产生的信息。不幸的是,我无法使用 Python 的多处理或线程模块,因为脚本可以在同一文件系统上的不同计算机上运行。即每个脚本都是从命令行启动的。

我所需要的只是每个队列元素都是一个字符串,并且队列是进程安全的。

编辑:我找到了queuelib pqueque的模块,但它们不提供进程安全性。我正在考虑用atomicfile调用替换queuelib的文件处理。但我担心调试它的时间太长,因为我时间不够,而且在编写应该是进程安全的软件时总是有一些细节需要注意。

注1:我使用的是Python 2.7。

注意2:我知道这个问题,但是我的要求非常适中,我正在寻找一个简单的解决方案,而该问题提供的答案涉及复杂的库,没有关于如何使用队列的示例。

编辑(2019):对于登陆这里的任何人,我发现SQLite 数据库提供原子访问,它有一个 python API,并且它是无服务器的。因此,我相信用它来实现我的问题中的队列是可能的(并且很容易)。

python queue asynchronous cluster-computing multiprocessing

5
推荐指数
0
解决办法
2921
查看次数

一个干净的API,用于在python中线程化函数调用

我想在线程中调用一个函数。使用传统 API 调用它看起来像:

from threading import Thread
import numpy as np
a = np.random.rand(int(1e8),1)

Thread(target=np.savez_compressed, args=('/tmp/values.a', dict(a=a))).start()
Run Code Online (Sandbox Code Playgroud)

我想知道是否有一个 pythonic 是使用更干净的 API 进行这个线程调用,而不定义一个特定于np.savez_compressed.

例如(伪代码)风格的东西:

@make_threaded
np.savez_compressed('/tmp/values.a', dict(a=a))
Run Code Online (Sandbox Code Playgroud)

不幸的是,装饰器只能应用于函数定义,所以上面的伪代码是不合法的。

编辑:我不是专门寻找装饰器 API。相反,一种使函数调用线程化的更简洁的方法

python python-multithreading python-3.x

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

解析python中的字符串:如何在忽略引号内的换行符的同时拆分换行符

我有一个文本,我需要在python中解析.

这是一个字符串,我想将它拆分为一个行列表,但是,如果换行符(\n)在引号内,那么我们应该忽略它.

例如:

abcd efgh ijk\n1234 567"qqqq\n---" 890\n
Run Code Online (Sandbox Code Playgroud)

应该解析为以下行的列表:

abcd efgh ijk
1234 567"qqqq\n---" 890
Run Code Online (Sandbox Code Playgroud)

我已尝试过split('\n'),但我不知道如何忽略这些引号.

任何的想法?

谢谢!

python regex parsing

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

如何向 pandas 数据框添加新记录

我想将带有新索引的新记录添加到 pandas 数据框中,例如:

df = pandas.DataFrame(columns = ['COL1', 'COL2'])
Run Code Online (Sandbox Code Playgroud)

现在我有一个新记录,索引标签为“Test1”,值为 [20, 30] 我想做类似的事情(伪代码):

df.append(index='Test1', [20, 30])
Run Code Online (Sandbox Code Playgroud)

所以我的结果是

       COL1   COL2
Test1   20     30
Run Code Online (Sandbox Code Playgroud)

我达到的最远的是:

df = df.append({'COL1':20, 'COL2':30}, ignore_index=True)
Run Code Online (Sandbox Code Playgroud)

但这个解决方案不包括新索引

谢谢!

python pandas

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

在python中切片列表的一种优雅方法,给出了另一个要切片的id列表

我正在寻找一种优雅的方法来切割lpython中的列表,给出一个id列表l_ids.例如,而不是写作

new_list = [l[i] for i in l_ids] 
Run Code Online (Sandbox Code Playgroud)

写一些像(伪代码):

new_list = l[*l_ids] 
Run Code Online (Sandbox Code Playgroud)

切片列表有类似的方法吗?

我觉得有人已经问过这个问题,但我找不到任何参考资料.

编辑:可以假设所有列表项都是相同的类型

python slice

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

如何*懒惰*迭代OrderedDict中键的反向顺序?

我想以OrderedDict相反的顺序迭代.

即颠倒顺序:

for k, v in my_ordered_dict.iteritems():
   # < do stuff >
Run Code Online (Sandbox Code Playgroud)

到目前为止,通过反转列表,我得到了一个非懒惰的版本:

for k, v in list(my_ordered_dict.iteritems())[::-1]:
   # < do stuff >
Run Code Online (Sandbox Code Playgroud)

任何想法如何使它更好?

python dictionary ordereddictionary

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

如何同时向多个 tmux 窗格发送不同的命令

我正在连接到一组机器,每台机器都位于一个单独的 tmux 窗格上。

我有一组想要同时发送的命令,这样每个命令都会在不同的tmux 窗格上执行。

有什么办法可以做到吗?

例如命令:

cmdA 
cmdB 
cmdC 
cmdD 
Run Code Online (Sandbox Code Playgroud)

同时发送到不同的 tmux 窗格

shell1> cmdA
______________________________________
shell2> cmdB
______________________________________
shell3> cmdC
______________________________________
shell4> cmdD
______________________________________
Run Code Online (Sandbox Code Playgroud)

tmux

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

如何在matlab中减去两个datestr?

我有许多样本的数据集.每个样本包含开始和结束时间,每个时间采用datestr(现在).

例如

sample.tstart = datestr(now)
%%Some job is running
sample.tend = datestr(now)
Run Code Online (Sandbox Code Playgroud)

如何减去时间来评估作业的已用时间?

谢谢!

time matlab datetime

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

Pandas iterrows将列的类型更改为float.如何将其转换回原始类型?

Pandas iterrows改变列的类型.根据这个 github问题,这是一个预期的行为.

有什么想法将pythonic和优雅的方法重新塑造成原始类型吗?请注意,我有多种列类型.

最小的例子

df = pd.DataFrame([range(5), range(5)])
df.iloc[:,1] = df.iloc[:,1].astype('float')
for row in df.iterrows():
    print row
Run Code Online (Sandbox Code Playgroud)

结果用

(0, 0    0.0
1    1.0
2    2.0
3    3.0
4    4.0
Name: 0, dtype: float64)
(1, 0    0.0
1    1.0
2    2.0
3    3.0
4    4.0
Name: 1, dtype: float64)
Run Code Online (Sandbox Code Playgroud)

请注意,df.dtypes返回列的类型,但是,我想不出使用它将行转换回该类型的优雅方式.

python pandas

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