我需要找到我的代码中的所有位置(文件夹中的几个M文件),其中我使用了特定的函数(unique在本例中).
你知道是否有可能吗?
你好我有一个char的单元格数组(由下划线分隔),我想转换为double.我是在for循环中完成的,但由于尺寸很大,需要花费很多时间.我想用cellfun,但我不知道如何通过分隔符.
你能帮助我吗?
listofwords = {'02_04_04_52';'02_24_34_02'};
for i = 1 : size(listofwords,1)
listofwords_double(i,:) = str2double(strsplit(listofwords{i},'_'))./1000;
end
listofwords_double2= cellfun(@strsplit , listofwords);
Run Code Online (Sandbox Code Playgroud)
基准
按照Divakar的要求
>> benchmark1
Speedup with EVAL over NO-LOOP-SSCANF = -46.3398%
>> benchmark1
Speedup with EVAL over NO-LOOP-SSCANF = -46.4068%
>> benchmark1
Speedup with EVAL over NO-LOOP-SSCANF = -47.1129%
>> benchmark1
Speedup with EVAL over NO-LOOP-SSCANF = -46.2882%
>> benchmark1
Speedup with EVAL over NO-LOOP-SSCANF = -46.2325%
>> benchmark1
Speedup with EVAL over NO-LOOP-SSCANF = -46.0161%
>> …Run Code Online (Sandbox Code Playgroud) 在熊猫数据框中
matrix
Run Code Online (Sandbox Code Playgroud)
我想找到NaN的行(索引).
我想做的就是在列中找到NaN
idx_nan = matrix.columns[np.isnan(matrix).any(axis=1)]
Run Code Online (Sandbox Code Playgroud)
但它不起作用 matrix.rows
在行中查找项目的等价物是什么?
我有一个df包含一些时间戳的数据帧
df['Date'].values
Out[16]:
array(['2015-03-25T14:36:39.199994000', '2015-03-25T14:36:39.199994000',
'2015-03-26T10:05:03.699999000', '2015-04-19T16:01:49.680009000',
'2015-04-19T16:36:10.040007000', '2015-04-19T16:36:10.040007000',
'2015-04-19T16:36:10.040007000'], dtype='datetime64[ns]')
Run Code Online (Sandbox Code Playgroud)
正如您所看到的那样,第一个和第二个时间戳是相等的,但也是最后一个3.
我想扫描数据帧,如果有时间戳相等,则保持第一个,并以相等的其他方式逐步添加5秒.新的数据框应该是这样的
df['Date'].values
Out[16]:
array(['2015-03-25T14:36:39.199994000', '2015-03-25T14:36:44.199994000',
'2015-03-26T10:05:03.699999000', '2015-04-19T16:01:49.680009000',
'2015-04-19T16:36:10.040007000', '2015-04-19T16:36:15.040007000',
'2015-04-19T16:36:20.040007000'], dtype='datetime64[ns]')
Run Code Online (Sandbox Code Playgroud)
有没有pythonic的方法没有循环..我正在考虑根据时间戳分组,但后来我不知道如何继续...
我创建了一个pandas数据帧
df = pd.DataFrame(data=[[1],[2],[3],[1],[2],[3],[1],[2],[3]])
df
Out[19]:
0
0 1
1 2
2 3
3 1
4 2
5 3
6 1
7 2
8 3
Run Code Online (Sandbox Code Playgroud)
我计算长度= 3的窗口的75%百分位数
df.rolling(window=3,center=False).quantile(0.75)
Out[20]:
0
0 NaN
1 NaN
2 2.0
3 2.0
4 2.0
5 2.0
6 2.0
7 2.0
8 2.0
Run Code Online (Sandbox Code Playgroud)
然后检查我分别在第一个窗口计算75%
df.iloc[0:3].quantile(0.75)
Out[22]:
0 2.5
Name: 0.75, dtype: float64
Run Code Online (Sandbox Code Playgroud)
为什么我得到不同的价值?
我有一个numpy的数组:
seq = np.array(range(1,31))
In [24]: seq
Out[24]: array([ 1, 2, 3, ..., 28, 29, 30])
Run Code Online (Sandbox Code Playgroud)
我想将其划分为长度为n的重叠(或非重叠)部分。
n=7
overlap = 3
windowed_seq = windowing(seq,n,overlap)
In [24]: windowed_seq
Out[24]: [ 1, 5, ..., 17, 21,
2, 6, ..., 18, 22,
3, 7, ..., 19, 23,
4, 8, ..., 20, 24,
5, 9, ..., 21, 25,
6, 10, ..., 22, 26,
7, 11, ..., 23, 27]
Run Code Online (Sandbox Code Playgroud)
最后一列:
25,
26,
27,
28,
29,
30,
31,
?]
Run Code Online (Sandbox Code Playgroud)
被省略,因为缺少一个元素来完成窗口。
我在互联网上找到了此解决方案,但不适用于数组...
https://www.safaribooksonline.com/library/view/python-cookbook-2nd/0596007973/ch19s08.html
import itertools
def windows(iterable, …Run Code Online (Sandbox Code Playgroud) 如何合并 2 个索引
index1
Out[8]: Int64Index([22, 23, 24, 25, 32, 33, 34], dtype='int64')
index2
Out[8]: Int64Index([20, 23, 24, 25, 32, 33, 34], dtype='int64')
Run Code Online (Sandbox Code Playgroud)
从而获得
index3
Out[8]: Int64Index([20, 22, 23, 24, 25, 32, 33, 34], dtype='int64')
Run Code Online (Sandbox Code Playgroud)
包含没有重复项的index1和index2?
给定数据框 df
df = pd.DataFrame([1,2,3,4])
print(df)
0
0 1
1 2
2 3
3 4
Run Code Online (Sandbox Code Playgroud)
我想将其修改为
print(df)
0
A 1
A 2
A 3
A 4
Run Code Online (Sandbox Code Playgroud) 我有一个数据框 df
df
Out[15]:
Subject ID
StartDate
2017-11-06 ID1
2017-11-07 ID1
2017-11-08 ID2
2017-11-10 ID3
Run Code Online (Sandbox Code Playgroud)
我把它保存在一个excel文件中
writer = pd.ExcelWriter(os.path.join(folders_path,'summary.xls'))
df.to_excel(writer,'Sheet1')
writer.save()
Run Code Online (Sandbox Code Playgroud)
但是我想根据 来格式化行的颜色Subject ID,即我想为每个 ID 使用不同的颜色
给出数据帧df
df = pd.DataFrame(data=[[np.nan,1],
[np.nan,np.nan],
[1,2],
[2,3],
[np.nan,np.nan],
[np.nan,np.nan],
[3,4],
[4,5],
[np.nan,np.nan],
[np.nan,np.nan]],columns=['A','B'])
df
Out[16]:
A B
0 NaN 1.0
1 NaN NaN
2 1.0 2.0
3 2.0 3.0
4 NaN NaN
5 NaN NaN
6 3.0 4.0
7 4.0 5.0
8 NaN NaN
9 NaN NaN
Run Code Online (Sandbox Code Playgroud)
我需要nan使用以下规则替换:
1)如果nan在开始时用nan之后的第一个值替换
2)如果nan处于2个或更多个值的中间,则用这些值的平均值代替nan
3)如果nan在末尾替换为最后一个值
df
Out[16]:
A B
0 1.0 1.0
1 1.0 1.5
2 1.0 2.0
3 2.0 3.0
4 2.5 3.5
5 2.5 3.5
6 3.0 4.0
7 4.0 …Run Code Online (Sandbox Code Playgroud)