更改Python中的数字范围
我正在用Python做SVD,我的数据索引范围是150000到160000。正因为如此,SVD变得非常资源密集。如何在维护重复数据的同时将此数据的范围更改为0-10000更改Python中的数字范围,python,pandas,scipy,Python,Pandas,Scipy,我正在用Python做SVD,我的数据索引范围是150000到160000。正因为如此,SVD变得非常资源密集。如何在维护重复数据的同时将此数据的范围更改为0-10000 Eg: i have consecutive data points :150001,150001,155003,156004,157005 it should map to :1,1,2,3,4 这样范围缩小了,我就不必交给高度稀疏的数据martrix了 我的主要要求是需要将(1691692569453445999
Eg: i have consecutive data points :150001,150001,155003,156004,157005
it should map to :1,1,2,3,4
这样范围缩小了,我就不必交给高度稀疏的数据martrix了
我的主要要求是需要将(16916925694534459999)等数据转换为(0,0,1,2,3,4)我为此编写了一个小函数,希望有一种更简单的方法
def range_minimizer():
ind=0
for i in d1.index:
if i==0:
d1['new_index']=0
else:
if d1['movie'][i]==d1['movie'][i-1]:
d1['new_index'][i]=ind
else:
ind+=1
d1['new_index'][i]=ind
仅供参考我的数据如下
user movie rating
0 1 169 2.5
1 1 2471 3.0
2 1 48516 5.0
3 2 2571 3.5
4 2 109487 4.0
对数据运行此函数后,我得到最终结果:
user movie rating ind
0 1 169 2.5 0
1 1 2471 3.0 1
2 1 48516 5.0 2
3 2 48516 3.5 2
4 2 109487 4.0 3
我为此写了一个小函数,我希望有一个更简单的方法来做同样的事情
def range_minimizer():
ind=0
for i in d1.index:
if i==0:
d1['new_index']=0
else:
if d1['movie'][i]==d1['movie'][i-1]:
d1['new_index'][i]=ind
else:
ind+=1
d1['new_index'][i]=ind
仅供参考我的数据如下
user movie rating
0 1 169 2.5
1 1 2471 3.0
2 1 48516 5.0
3 2 2571 3.5
4 2 109487 4.0
对数据运行此函数后,我得到最终结果:
user movie rating ind
0 1 169 2.5 0
1 1 2471 3.0 1
2 1 48516 5.0 2
3 2 48516 3.5 2
4 2 109487 4.0 3
IIUC,您可以在一个系列中使用
rank(method='dense')
:
IIUC,您可以在一个系列中使用
rank(method='dense')
:
以下代码按排名顺序记录数字列表中唯一数字的索引:
>>> import numpy as np
>>> v = [169,169,256,945,945,945,345,9999]
>>> np.hstack([0, np.cumsum(np.diff(v)!=0)])
array([0, 0, 1, 2, 2, 2, 3, 4])
请更新问题以反映这些要求。以下代码按排名顺序记录数字列表中唯一数字的索引:
>>> import numpy as np
>>> v = [169,169,256,945,945,945,345,9999]
>>> np.hstack([0, np.cumsum(np.diff(v)!=0)])
array([0, 0, 1, 2, 2, 2, 3, 4])
请更新问题以反映这些要求。听起来这里的答案只是“减去150000”。如果您需要有关减法150000的帮助,我们需要查看更多上下文。正如user2357112提到的:
remapped_data=[num-150000 for num in data]
Scipy具有稀疏矩阵函数。im使用sparsesvd,但在将数据传递给它之前,我需要将其转换为稀疏矩阵,这个维度的数据不是这样的。听起来这里的答案只是“减去150000”。如果您需要有关减法150000的帮助,我们需要查看更多上下文。正如user2357112提到的:remapped_data=[num-150000 for num in data]
Scipy具有稀疏矩阵函数。im使用sparsesvd,但在将数据传递给它之前,我需要将其转换为稀疏矩阵,这个维度的数据不会发生这种情况,嗯?这和你的问题有关吗?150001的资料在哪里?我再给你举一个我数据的例子。虽然数据不同,但要点是相同的。为什么电影栏会改变?你的意思是这样吗?忘了一切吧,我的要求是我需要将(16916925694534459999)转换之类的数据映射为(0,0,1,2,3,4)。就是这样。我想这是假设数据是按电影编号排序的。嗯?这和你的问题有关吗?150001的资料在哪里?我再给你举一个我数据的例子。虽然数据不同,但要点是相同的。为什么电影栏会改变?你的意思是这样吗?忘了一切吧,我的要求是我需要将(16916925694534459999)转换之类的数据映射为(0,0,1,2,3,4)。就是这样。我想这是假设数据是按电影编号排序的。