想了解使用NumPy计算的此代码能否更高效?的新动态吗?本文将为您提供详细的信息,我们还将为您解答关于如何使用numpy的相关问题,此外,我们还将为您介绍关于numpy计算路线距离、NumPy:使用n
想了解使用NumPy计算的此代码能否更高效?的新动态吗?本文将为您提供详细的信息,我们还将为您解答关于如何使用numpy的相关问题,此外,我们还将为您介绍关于numpy计算路线距离、NumPy:使用nditer迭代numpy数组的外部尺寸、Numpy:使用numpy.sort()、numpy.argsort()获取排序后的值、php – 在HHVM上使用Proxygen或NGINX FastCGI本地套接字是否更高效?的新知识。
本文目录一览:- 使用NumPy计算的此代码能否更高效?(如何使用numpy)
- numpy计算路线距离
- NumPy:使用nditer迭代numpy数组的外部尺寸
- Numpy:使用numpy.sort()、numpy.argsort()获取排序后的值
- php – 在HHVM上使用Proxygen或NGINX FastCGI本地套接字是否更高效?
使用NumPy计算的此代码能否更高效?(如何使用numpy)
在np.where
上使用a
用1
屏蔽非正数,然后用np.log
屏蔽:
b = np.log(np.where(a>0,a,1))
输出:
array([0.,0.,0.69314718])
,
numpy.log
作为“ ufunc”,接受参数where
和out
。因此,一种有效的计算方法如下。
In [6]: a = np.array([-1,1,2])
创建输出数组。
In [7]: b = np.zeros(len(a))
告诉numpy.log
仅计算结果a > 0
,并将输出放入b
。这将返回给定为out
的数组,并就地修改out
(即b
)。
In [8]: np.log(a,where=a > 0,out=b)
Out[8]: array([0.,0.69314718])
In [9]: b
Out[9]: array([0.,0.69314718])
numpy计算路线距离
numpy计算路线距离
觉得有用的话,欢迎一起讨论相互学习~Follow Me
参考文献 enumerate遍历数组 np.diff函数 numpy适用数组作为索引
<font color=purple>标记路线上的点</font>
$$X={X1,X2,X3,X4,X5,X6}$$ $$Xn=(x_n,y_n)$$
import numpy as np
# 适用二维数组表示地图上的六个点
# city_position.shape=(6,2) 表示旅行商经过的路线
city_position=np.array([[1,18],[6,23],[8,64],[7,49],[49,48],[12,36]])
<font color=purple>存储路线上的点</font>
point_x=np.ones((6,1))
point_y=np.ones((6,1))
point_x=city_position[:,0] # 存放路线的横坐标
point_y=city_position[:,1] # 存放路线的纵坐标
# print(point_x)
# print(point_y)
# [ 1 6 8 7 49 12]
# [18 23 64 49 48 36]
<font color=purple>依次计算路线上点之间的距离</font>
$$total_distance=\sum_{n=2}^{n}\sqrt{(x_n-x_{n-1})^2+(y_n-y_{n-1})^2}$$
# 计算路线的距离
total_distance=np.sum(np.sqrt(np.square(np.diff(point_x)) + np.square(np.diff(point_y))))
print("total_distance",total_distance)
print("np.diff(point_x)",np.diff(point_x))
print("np.diff(point_y)",np.diff(point_y))
# total_distance 144.062319447
# np.diff(point_x) [ 5 2 -1 42 -37]
# np.diff(point_y) [ 5 41 -15 -1 -12]
$$\sqrt{(5^2+5^2)}+\sqrt{(2^2+41^2)}+\sqrt{((-1)^2+(-15)^2)}+\sqrt{(42^2+(-1)^2)}+\sqrt{((-37)^2+(-12)^2)}$$
NumPy:使用nditer迭代numpy数组的外部尺寸
我无法遍历numpy数组的外轴。
import numpy as npa = np.arange(2*3).reshape(2,3)it = np.nditer(a)for i in it: print i
正如人们所期望的那样:
012345
但是,我希望输出为三分之二,这样我就遍历了外轴:
(0, 1, 2)(3, 4, 5)
我知道可以通过多种方式实现此目标,但是在仔细阅读nditer文档之后,我似乎找不到使用nditer的解决方案。我以此为契机学习nditer。因此,我宁愿不使用其他解决方案,除非它确实更有效或更有效。
答案1
小编典典用简单的方式控制迭代比较容易for
:
In [17]: aOut[17]: array([[0, 1, 2], [3, 4, 5]])In [18]: for row in a: ...: print(row) ...: [0 1 2][3 4 5]
这样做nditer
很尴尬。除非您需要cython
如页面结尾所述使用广播,否则nditer
不会提供任何速度优势。即使有了cython
,我的速度也memoryviews
超过了nditer
。
看看np.ndindex
。它创建一个尺寸减小的虚拟数组,并对此进行nditer:
In [20]: for i in np.ndindex(a.shape[0]): ...: print(a[i,:]) ...: [[0 1 2]][[3 4 5]]
得到它了:
In [31]: for x in np.nditer(a.T.copy(), flags=[''external_loop''], order=''F''): ...: print(x)[0 1 2][3 4 5]
就像我说的-尴尬
Numpy:使用numpy.sort()、numpy.argsort()获取排序后的值
获取矩阵排序后的值
print("---------------------np.sort()可得升序后的值-------------------------")
import numpy as np
a = np.array([[4, 3, 5], [1, 2, 1]])
print (a)
print("-----")
b = np.sort(a, axis=1) # axis=1 表示按行排序,默认升序
print ("b=","\n",b)
print("-----")
a.sort(axis=1)
print ("a=",a)
print("------------np.argsort() 可获取从小到大的值的索引位置-----------------")
a = np.array([4, 3, 1, 2])
j = np.argsort(a) # argsort 求的是从小到大的值的索引位置,即 j 返回的是索引
print ("j=",j)
print ("a[j]=",a[j]) # 得出从小到大排序后的值
结果图:
php – 在HHVM上使用Proxygen或NGINX FastCGI本地套接字是否更高效?
我找不到任何基准或权威来源,它们提供了两个选项中哪个选项表现最佳的任何指示.显然,我可以配置两个系统在不同的并发组合下手动测试各种负载并组合一个基准测试,但如果有人已经做过这样的比较,我宁愿避免工作.
从一个纯粹的性能角度来看,有没有人知道哪个是更好的选择?
解决方法
我们今天的关于使用NumPy计算的此代码能否更高效?和如何使用numpy的分享就到这里,谢谢您的阅读,如果想了解更多关于numpy计算路线距离、NumPy:使用nditer迭代numpy数组的外部尺寸、Numpy:使用numpy.sort()、numpy.argsort()获取排序后的值、php – 在HHVM上使用Proxygen或NGINX FastCGI本地套接字是否更高效?的相关信息,可以在本站进行搜索。
本文标签: