从两个给定整数 Python Numpy 中生成唯一整数
Make Unique Integer from Two Given Integers Python Numpy
我正在尝试使用自定义索引索引一个 numpy 数组。我知道索引只能是整数。
我有一些两个数字对看起来像:
400, 200
300, 100
500, 60
我想从这对生成唯一的整数,以便我可以使用它们来索引一个 numpy 数组。喜欢,
npArray[400200, 1] = someVal
npArray[300100, 2] = someOtherVal
问题是,我的 numpy 数组的大小只有 4000 * 2。如何从落入这 4000 个范围内的那些对生成唯一标识符?
提前致谢。
您可以创建一个中间索引并将该索引值用于 numpy 数组:
List1 = [400,300,500,400]
List2= [200,100,60,200]
zipList = list(set(zip(List1,List2)))
def getIndex(Val1,Val2):
a = zipList.index((Val1,Val2))
return a
print getIndex(400,200)
答案:2
这 2 现在可用于索引数组。 zipList[2] 将 return (400,200)。这些值将是整数并且始终是唯一的。
据我了解您的问题,您正在寻找一种一对一创建函数的方法,以便使用另外两个整数生成一个整数。看下图,这是一个实现它的函数:
谈到 Python 实现,这是我的代码(对于 Python 3.x):
def pack(i1, i2):
if i1 > i2:
return i1**2 + i2
else:
return (i2 + 1)**2 - 1 - i1
def unpack(i):
mx = int(i**0.5)
s = (mx**2 + (mx + 1)**2 - 1) // 2
if s >= i:
return mx, mx - s + i
else:
return mx - i + s, mx
i = pack(3, 5)
print(i) # 32
i1, i2, = unpack(i)
print(i1, i2) # 3 5
print(pack(400, 200)) # 160200
print(unpack(160200)) # (400, 200)
print(pack(300, 100)) # 90100
print(unpack(90100)) # (300, 100)
print(pack(500, 60)) # 250060
print(unpack(250060)) # (500, 60)
这个索引是独一无二的,因为我总是能够计算出初始的两个整数。
我正在尝试使用自定义索引索引一个 numpy 数组。我知道索引只能是整数。
我有一些两个数字对看起来像:
400, 200
300, 100
500, 60
我想从这对生成唯一的整数,以便我可以使用它们来索引一个 numpy 数组。喜欢,
npArray[400200, 1] = someVal
npArray[300100, 2] = someOtherVal
问题是,我的 numpy 数组的大小只有 4000 * 2。如何从落入这 4000 个范围内的那些对生成唯一标识符?
提前致谢。
您可以创建一个中间索引并将该索引值用于 numpy 数组:
List1 = [400,300,500,400]
List2= [200,100,60,200]
zipList = list(set(zip(List1,List2)))
def getIndex(Val1,Val2):
a = zipList.index((Val1,Val2))
return a
print getIndex(400,200)
答案:2
这 2 现在可用于索引数组。 zipList[2] 将 return (400,200)。这些值将是整数并且始终是唯一的。
据我了解您的问题,您正在寻找一种一对一创建函数的方法,以便使用另外两个整数生成一个整数。看下图,这是一个实现它的函数:
谈到 Python 实现,这是我的代码(对于 Python 3.x):
def pack(i1, i2):
if i1 > i2:
return i1**2 + i2
else:
return (i2 + 1)**2 - 1 - i1
def unpack(i):
mx = int(i**0.5)
s = (mx**2 + (mx + 1)**2 - 1) // 2
if s >= i:
return mx, mx - s + i
else:
return mx - i + s, mx
i = pack(3, 5)
print(i) # 32
i1, i2, = unpack(i)
print(i1, i2) # 3 5
print(pack(400, 200)) # 160200
print(unpack(160200)) # (400, 200)
print(pack(300, 100)) # 90100
print(unpack(90100)) # (300, 100)
print(pack(500, 60)) # 250060
print(unpack(250060)) # (500, 60)
这个索引是独一无二的,因为我总是能够计算出初始的两个整数。