设置:Anaconda 2.0.0(Win 64)、Spyder(Anaconda 附带的 2.3.0rc)
我配置图形:工具 > 首选项 > iPython 控制台 > 图形 > 图形后端 > 内联
但是无论我做什么,图形总是在单独的窗口中打开?有没有办法强制它们在控制台中内联?
在 Python 3.6 中,有一个新的 f-string 在字符串中包含变量,这很棒,但是如何正确应用这些字符串来为 matplotlib 打印上标或下标?
(要实际看到带有下标的结果,您需要foo在 matplotlib 图上绘制变量)
换句话说,我如何获得这种行为:
var = 123
foo = r'text$_{%s}$' % var
text<sub>123</sub>
Run Code Online (Sandbox Code Playgroud)
使用新的 f-string 语法?到目前为止,我已经尝试将原始字符串文字与 f 字符串结合使用,但这似乎只是将下标应用于变量的第一个字符:
var = 123
foo = fr'text$_{var}$'
text<sub>1</sub>23
Run Code Online (Sandbox Code Playgroud)
因为 the{有一个不明确的功能,作为分隔r应该考虑的下标和分隔f变量的地方。
我已经用 pd.Series 和 pd.DataFrame 进行了一段时间的实验,并遇到了一些奇怪的问题。假设我有以下 pd.DataFrame:
df = pd.DataFrame({'col':[[1,2,3]]})
请注意,该数据框包括包含列表的列。我想修改此数据框的副本并返回其修改后的版本,以便初始版本保持不变。为了简单起见,假设我想在其单元格中添加整数“4”。
我尝试过以下代码:
def modify(df):
dfc = df.copy(deep=True)
dfc['col'].iloc[0].append(4)
return dfc
modify(df)
print(df)
Run Code Online (Sandbox Code Playgroud)
问题是,除了新的副本之外dfc,初始的 DataFramedf也被修改了。为什么?我应该怎么做才能防止初始数据帧被修改?我的pandas版本是0.25.0
我试图找到一种矢量化方法来查找数组中的第一个位置,其中的值不会高于 n 个先前数字的最大值。我想过使用 scipy.signal 的 find_peaks 方法来查找局部最大值。我认为如果你定义距离,假设 10 n 是 10,那么它确实如此。但不幸的是,距离的条件必须在两个方向上都满足 - 以前的和即将到来的数字。有没有其他方法或方法可以找到这样的东西?
例子:
arr1 = np.array([1. , 0.73381293, 0.75649351, 0.77693474, 0.77884614,
0.81055903, 0.81402439, 0.78798586, 0.78839588, 0.82967961,
0.8448 , 0.83276451, 0.82539684, 0.81762916, 0.82722515,
0.82101804, 0.82871127, 0.82825041, 0.82086957, 0.8347826 ,
0.82666665, 0.82352942, 0.81270903, 0.81191224, 0.83180428,
0.84975767, 0.84044236, 0.85057473, 0.8394649 , 0.80000001,
0.83870965, 0.83962262, 0.85039371, 0.83359748, 0.84019768,
0.83281732, 0.83660132])
from scipy.signal import find_peaks
peaks, _ = find_peaks(arr1, distance=10)
Run Code Online (Sandbox Code Playgroud)
在这种情况下,它会找到位置 10 和 27。但位置 0 也有 10 个不高的后续元素。我怎样才能找到那些?
代码
#Variables
var1 = ['Warehouse Pencil 1.docx', 'Production Pen 20.docx']
list1 = []
for x in var1:
splitted = x.split()
a = [splitted[0] + ' ' + splitted[1]]
list1.append(a)
print(list1)
Run Code Online (Sandbox Code Playgroud)
输出
[['Warehouse Pencil']]
[['Warehouse Pencil'], ['Production Pen']]
Run Code Online (Sandbox Code Playgroud)
目标
我打算拆分列表,获取每个部分的第 1 个和第 2 个单词,然后将它们放入一个新列表中。
题
为什么我的输出给我一个奇怪的输出?我哪里错了?
期望输出
我想要的输出应该是这样的:
['Warehouse Pencil', 'Production Pen']
Run Code Online (Sandbox Code Playgroud)
抓取第 1 个和第 2 个单词并将它们放入 1 个列表中。
Spyder 4.0 刚刚发布,我无法根据我想要的布局移动面板。
我怎样才能做到这一点?
我有一个字典列表,我想获得那些在一个键中具有相同值的字典:
my_list_of_dicts = [{
'id': 3,
'name': 'John'
},{
'id': 5,
'name': 'Peter'
},{
'id': 2,
'name': 'Peter'
},{
'id': 6,
'name': 'Mariah'
},{
'id': 7,
'name': 'John'
},{
'id': 1,
'name': 'Louis'
}
]
Run Code Online (Sandbox Code Playgroud)
我想保留那些具有相同“名称”的项目,因此,我想获得以下内容:
duplicates: [{
'id': 3,
'name': 'John'
},{
'id': 5,
'name': 'Peter'
},{
'id': 2,
'name': 'Peter'
}, {
'id': 7,
'name': 'John'
}
]
Run Code Online (Sandbox Code Playgroud)
我正在尝试(未成功):
duplicates = [item for item in my_list_of_dicts if len(my_list_of_dicts.get('name', None)) > 1]
Run Code Online (Sandbox Code Playgroud)
我清楚这段代码的问题,但不能做正确的句子
我有一个如下所示的数据框:
data = {'speaker':['Adam','Ben','Clair'],
'speech': ['Thank you very much and good afternoon.',
'Let me clarify that because I want to make sure we have got everything right',
'By now you should have some good rest']}
df = pd.DataFrame(data)
Run Code Online (Sandbox Code Playgroud)
我想计算语音列中的单词数,但只计算预定义列表中的单词。例如,列表是:
wordlist = ['much', 'good','right']
Run Code Online (Sandbox Code Playgroud)
我想生成一个新列,显示每行中这三个单词的频率。因此,我的预期输出是:
speaker speech words
0 Adam Thank you very much and good afternoon. 2
1 Ben Let me clarify that because I want to make sur... 1
2 Clair By now you should have received a copy …Run Code Online (Sandbox Code Playgroud) 我在 Pluralsight 上看过这个测试题:
鉴于这些集合:
x = {'a', 'b', 'c', 'd'}
y = {'c', 'e', 'f'}
z = {'a', 'g', 'h', 'i'}
Run Code Online (Sandbox Code Playgroud)
的价值是x | y ^ z什么?
预期的答案是:
{'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i'}
Run Code Online (Sandbox Code Playgroud)
组合集合(自动丢弃重复项),并将它们从最低到最高排序。
我的问题是:
在 Ubuntu 18.04 上的 Python 3.7.5 上的结果:
{'c', 'h', 'f', 'd', 'b', 'i', 'g', 'a', 'e'}
Run Code Online (Sandbox Code Playgroud)
在 Ubuntu 18.04 上的 Python 2.17.17rc1 上的结果:
set(['a', 'c', 'b', 'e', 'd', 'g', 'f', 'i', 'h']) …Run Code Online (Sandbox Code Playgroud)