小编Jac*_*tad的帖子

在numpy数组的每一行中随机调整项目

我有一个像下面这样的numpy数组:

Xtrain = np.array([[1, 2, 3],
                   [4, 5, 6],
                   [1, 7, 3]])
Run Code Online (Sandbox Code Playgroud)

我想分别对每行的项进行随机播放,但不希望每行的shuffle相同(如在几个示例中只是随机播放列顺序).

例如,我想要一个如下输出:

output = np.array([[3, 2, 1],
                   [4, 6, 5],
                   [7, 3, 1]])
Run Code Online (Sandbox Code Playgroud)

如何以有效的方式随机随机地随机移动每一行?我的实际np数组超过100000行和1000列.

python arrays numpy

12
推荐指数
2
解决办法
1937
查看次数

从列表中随机选择值但具有字符长度限制

我有两个字符串列表,如下所示:

test1 = ["abc", "abcdef", "abcedfhi"]

test2 = ["The", "silver", "proposes", "the", "blushing", "number", "burst", "explores", "the", "fast", "iron", "impossible"]
Run Code Online (Sandbox Code Playgroud)

第二个列表更长,所以我想通过随机抽样将其下采样到第一个列表的长度.

def downsample(data):
    min_len = min(len(x) for x in data)
    return [random.sample(x, min_len) for x in data]

downsample([list1, list2])
Run Code Online (Sandbox Code Playgroud)

但是,我想添加一个限制,即从第二个列表中选择的单词必须与第一个列表的长度分布相匹配.因此,对于随机选择的第一个单词,它必须与较短列表的第一个单词具有相同的长度.这里的问题是也不允许替换.

如何随机选择n(短列表的长度)元素,test2从中匹配字符长度分布test1?谢谢,杰克

python

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

分组依据和聚合列,但如果值不匹配则创建NaN

我有一个如下数据框:

test = pd.DataFrame({'ID':[4, 5, 6, 6, 6, 7, 7, 7], 'val1':['one', 'one', 'two', 'two', 'three', np.nan, 'seven', 'seven'], 'val2':['hi', 'bye', 'hola', 'hola', 'hola', 'ciao', 'ciao', 'namaste'], 'val3':[3, 3, 4, np.nan, 4, 5, 5, 6]})

test
   ID   val1     val2  val3
0   4    one       hi   3.0
1   5    one      bye   3.0
2   6    two     hola   4.0
3   6    two     hola   NaN
4   6  three     hola   4.0
5   7    NaN     ciao   5.0
6   7  seven     ciao   5.0
7   7  seven  namaste   6.0 …
Run Code Online (Sandbox Code Playgroud)

python python-3.x pandas

8
推荐指数
2
解决办法
413
查看次数

从R中的字符串中提取子字符串和数字

我有几个字符串,以下是一些例子.

rfoutputtablep7q10000t20000c100
rfoutputtablep7q1000t20000c100
svmLinear2outputtablep7q20000t20000c100
svmLinear2outputtablep7q5000t20000c100
Run Code Online (Sandbox Code Playgroud)

我想和列的数据帧:algorithm,p,q,t,并c从这些提取字符串的值.所以前面的东西"outputtable"algorithm,后面的数字"p"是值p,数字后面"q"是值q等.

如何创建此数据框?

regex r

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

字符串的提取部分以4位数字开头,以句点结束

我有一个像下面这样的字符向量:

char <- c("cancer_6_53_7575_tumor.csv", "control_7_4_7363_healthy.csv")
Run Code Online (Sandbox Code Playgroud)

我想提取字符串中以4位数患者ID中的"7"开头并以"."结尾的部分,但是当该患者ID之前有7时,以下方法不起作用.

values <- unlist(qdapRegex::rm_between(char, "7", ".", extract = TRUE))
Run Code Online (Sandbox Code Playgroud)

如何指定它必须以4位数字中的7开头?

regex r

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

添加 seaborn clustermap 以与其他图一起显示

我试图将以下两个图放在同一个图上:

import seaborn as sns; sns.set(color_codes=True)
import matplotlib.pyplot as plt
f, (ax1, ax2) = plt.subplots(1, 2, sharey=True)
iris = sns.load_dataset("iris")
sns.boxplot(data=iris, orient="h", palette="Set2", ax = ax1)
species = iris.pop("species")
lut = dict(zip(species.unique(), "rbg"))
row_colors = species.map(lut)
sns.clustermap(iris, row_colors=row_colors, ax = ax2)
Run Code Online (Sandbox Code Playgroud)

我知道 clustermap 返回一个数字,所以这不起作用。但是,我仍然需要一种方法来将这些图彼此相邻(水平)呈现。sns.heatmap 返回一个轴,但它不支持聚类或颜色注释。

做这个的最好方式是什么 ?

python matplotlib python-3.x seaborn

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

R中最有效的kmeans群集程序包是什么?

抱歉,如果这看起来含糊不清,但我有一个数据集,其中包含100多个列,这些列具有要与之聚类的特征,并且〜10 ^ 6行。使用

kmeans(dataframe, centers = 100,
             nstart = 20,
             iter.max = 30)
Run Code Online (Sandbox Code Playgroud)

在i7-6700K上耗时一个多小时。它不使用多个核心,因此可以做些什么吗?

谢谢!

r

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

将 python 列表转换为 rpy2 中的 R 向量列表

我在 python 中有一个列表列表,如下所示:

test = [[4, 2, 5, 3], [5, 2], [6, 3, 2, 5, 5]]
Run Code Online (Sandbox Code Playgroud)

我想使用 rpy2 将其输入到 R 中的 dunn.test 中。

但是,我不确定如何将其转换为数字向量(R)列表。

我在尝试:

py2.robjects.ListVector(test)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python3/dist-packages/rpy2/robjects/vectors.py", line 635, in __init__
    kv = [(str(k), conversion.py2ri(v)) for k,v in tlist]
  File "/usr/lib/python3/dist-packages/rpy2/robjects/vectors.py", line 635, in <listcomp>
    kv = [(str(k), conversion.py2ri(v)) for k,v in tlist]
ValueError: too many values to unpack (expected 2)
Run Code Online (Sandbox Code Playgroud)

这样做的正确方法是什么?

python r rpy2

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

使用 pd.concat 时添加标识原始数据框的列

我有一个数据框字典,如下所示:

test = {'df1':pd.DataFrame({'col1':[3, 5, 1, 4], 'col2':[3, 5, 1, 4]}), 'df2':pd.DataFrame({'col1':[3, 5, 1, 4], 'col2':[3, 5, 1, 4]}), 'df3':pd.DataFrame({'col1':[3, 5, 1, 4], 'col2':[3, 5, 1, 4]}), 'df4':pd.DataFrame({'col1':[3, 5, 1, 4], 'col2':[3, 5, 1, 4]})]
Run Code Online (Sandbox Code Playgroud)

我想连接这些数据帧,但添加一个新列,该列给出值来自哪个数据帧的“身份”(字典键名称)。如何才能做到这一点?如果我这样做pd.concat(test.values()),我会得到我想要的串联,但没有标识列。

谢谢,杰克

python python-3.x pandas

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

逐列矢量化2D字符数组

我有一个2D numpy数组,如下所示:

a=np.array([["Science", "Blue", 3],
            ["Math", "Red", 4],
            ["Math", "Red", 5],
            ["Science", "Red", 3]])
Run Code Online (Sandbox Code Playgroud)

我需要逐列将其转换为数值,如下所示(所需的输出):

out=np.array([[0, 0, 0],
              [1, 1, 1],
              [1, 1, 2], 
              [0, 1, 0]])
Run Code Online (Sandbox Code Playgroud)

但是,对于下游可解释性,我还需要一个输出来追溯从数值到原始值.我在想这样的事情:

trace_back_dict = {0: {0: "Science", 1: "Math"}, 
                   1: {0: "Blue", 1: "Red"}, 
                   2: {0: 3, 1: 4, 2: 5}}
Run Code Online (Sandbox Code Playgroud)

其中外部键是原始数组的列索引,而内部字符串给出数字:字符值的映射.

有没有一种简单的方法可以做到这一点,最好是sklearn风格,我可以做一个fit_transform,然后transform(为了火车和测试集目的)?

我一直在寻找sklearnLabelEncoder,而且基本上我需要的是应用在每一列不同的一个.有关如何有效地做到这一点的任何建议?

谢谢!

插口

python numpy scikit-learn

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

使用元组列表中的第一个元素作为字典键

如何获取如下元组列表:

test = [('A', 1, 8, 4), ('B', 2, 6, 2), ('C', 3, 6, 2)]
Run Code Online (Sandbox Code Playgroud)

并制作一个字典,使用每个元组中的第一个元素作为键

output = {'A': (1, 8, 4), 'B':(2, 6, 2), 'C': (3, 6, 2)}
Run Code Online (Sandbox Code Playgroud)

如果原始列表是长度为 2 的元组列表,则dict(test)可以正常工作,但在这种情况下不起作用。

我可以[i[0] for i in test]提取每个元组的第一个元素,但我认为可能有一种更有效/Pythonic 和可推广的方法来执行此操作。

谢谢!

python dictionary list

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

根据AND或OR条件组合布尔列表

为了组合两个基于OR的布尔列表,np.logical_or可以使用,并且可以使用相似性AND np.logical_and.

但是,如果我有一个包含10个布尔值列表的列表,并希望使用AND或OR组合它们,我找不到一个简单的方法来执行此操作.

你能建议最有效的方法吗?

编辑:

booleans = [[True, True, False, True, False], [True, False, False, False, False], [True, False, False, False, False]]
Run Code Online (Sandbox Code Playgroud)

或输出: [True, True, False, True, False]

AND输出: [True, False, False, False, False]

谢谢,杰克

python boolean list

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