下面的问题背后的一般数学原理是什么?
取一个包含整数的向量,例如3,3,3,3,4,4,6,3,4,4,5,和另一个表示循环索引的向量,这些循环索引的值都小于第一个向量的值,例如1,1,1,1,1,1,1,1,1,1,1,1。当每个循环索引等于第一个向量中的相应索引时,将其重置为1。当所有索引都等于1时,程序结束。
这看起来像整数分解,但我不知道如何概括地说明这一点。什么原则在这里起作用?实现相同结果的更高效的计算方法是什么?
提前谢谢。
import numpy as np
unityVec = np.ones((10), dtype=np.int) # create a vector of ones
counter = 1 # initialize counter
counterVec = np.ones((10), dtype=np.int) # initialize counter array
counterVec = counterVec + 1 # make counter array > ones array
littleVec = ([3, 3, 3, 3, 4, 6, 3, 4, 4, 5]) # loop reset values
while not (np.array_equal(unityVec, counterVec)): # compare counter to ones vector
counterVec = counterVec + 1
for i in range(10):
if counterVec[i] == littleVec[i]:
counterVec[i] = 1 # reset counterVec element to 1 once it hits limit
#print("Counter: ", counter, "\tIndex: ", i, "\tcounterVec: ", counterVec, "\tlittleVec: ", littleVec)
counter = counter + 1
print("Indices converged after", counter-1, "iterations!")预期结果:小于或等于第一个向量值的乘积的正整数值。
实验结果:在给定样本值的情况下,59次循环后,指标收敛。
https://stackoverflow.com/questions/47716531
复制相似问题