我有一个像下面这样的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列.
我有两个字符串列表,如下所示:
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?谢谢,杰克
我有一个如下数据框:
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) 我有几个字符串,以下是一些例子.
rfoutputtablep7q10000t20000c100
rfoutputtablep7q1000t20000c100
svmLinear2outputtablep7q20000t20000c100
svmLinear2outputtablep7q5000t20000c100
Run Code Online (Sandbox Code Playgroud)
我想和列的数据帧:algorithm,p,q,t,并c从这些提取字符串的值.所以前面的东西"outputtable"是algorithm,后面的数字"p"是值p,数字后面"q"是值q等.
如何创建此数据框?
我有一个像下面这样的字符向量:
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开头?
我试图将以下两个图放在同一个图上:
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 返回一个轴,但它不支持聚类或颜色注释。
做这个的最好方式是什么 ?
抱歉,如果这看起来含糊不清,但我有一个数据集,其中包含100多个列,这些列具有要与之聚类的特征,并且〜10 ^ 6行。使用
kmeans(dataframe, centers = 100,
nstart = 20,
iter.max = 30)
Run Code Online (Sandbox Code Playgroud)
在i7-6700K上耗时一个多小时。它不使用多个核心,因此可以做些什么吗?
谢谢!
我在 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)
这样做的正确方法是什么?
我有一个数据框字典,如下所示:
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()),我会得到我想要的串联,但没有标识列。
谢谢,杰克
我有一个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(为了火车和测试集目的)?
我一直在寻找sklearn的LabelEncoder,而且基本上我需要的是应用在每一列不同的一个.有关如何有效地做到这一点的任何建议?
谢谢!
插口
如何获取如下元组列表:
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 和可推广的方法来执行此操作。
谢谢!
为了组合两个基于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 ×9
r ×4
python-3.x ×3
list ×2
numpy ×2
pandas ×2
regex ×2
arrays ×1
boolean ×1
dictionary ×1
matplotlib ×1
rpy2 ×1
scikit-learn ×1
seaborn ×1