2024-10-05 13:03:07 发布
网友
我创建了一个数组,用npr制服(大小=(N,2))。现在我想用一个函数来计算Xtotal^2+Ytotal^2,其中Xtotal和Ytotal分别是nx坐标和ny坐标的和。通过使用for循环,我没有问题,但是现在我想独立运行程序很多次(超过1000次),我能想到的唯一方法就是使用for循环。有没有可能在矢量化的代码中这样做,让它运行得更快?我正在做的实际项目有点复杂,在这里描述它太难了,但是我想如果我能解决这个简化的程序,我做更难的就没有问题了。你知道吗
谢谢
假设你的npr是numpy.random
npr
numpy.random
>>> import numpy as np >>> N = 5 >>> xy = np.random.uniform(size=(N, 2)) >>> xy[:, 0] array([ 0.91602043, 0.14053012, 0.01789579, 0.84857576, 0.20245375]) >>> xy[:, 1] array([ 0.39608331, 0.46119256, 0.23600489, 0.93313743, 0.9790776 ])
然后使用切片和索引:
>>> xy[:, 0]**2 + xy[:, 1]**2 array([ 0.99597542, 0.23244729, 0.05601857, 1.5908263 , 0.99958046]) >>> >>> xy[0, :]**2 + xy[1, :]**2 array([ 0.85884215, 0.36958056])
这就是你想要的吗?你知道吗
>>> N = 5 >>> coords = np.random.uniform(size=(N, 2)) >>> coords [[ 0.00510663 0.52338403] [ 0.88250555 0.0440339 ] [ 0.1753249 0.4534223 ] [ 0.13600696 0.71194949] [ 0.87044574 0.80934245]] >>> coords.sum(axis=0) array([ 2.31797242, 0.95364616]) >>> (coords.sum(axis=0)**2).sum() 12.247833350611774
如果你想重复1000次,那么你可以尝试生成1000*5个随机数。请注意,如果您正在进行复杂的处理(而不仅仅是求和和和幂),那么一般来说,您的1000次重复无法矢量化。你知道吗
假设你的
npr
是numpy.random
然后使用切片和索引:
这就是你想要的吗?你知道吗
如果你想重复1000次,那么你可以尝试生成1000*5个随机数。请注意,如果您正在进行复杂的处理(而不仅仅是求和和和幂),那么一般来说,您的1000次重复无法矢量化。你知道吗
相关问题 更多 >
编程相关推荐