GVKun编程网logo

使用NumPy计算的此代码能否更高效?(如何使用numpy)

8

想了解使用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)

np.where上使用a1屏蔽非正数,然后用np.log屏蔽:

b = np.log(np.where(a>0,a,1))

输出:

array([0.,0.,0.69314718])
,

numpy.log作为“ ufunc”,接受参数whereout。因此,一种有效的计算方法如下。

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计算路线距离

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:使用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()获取排序后的值

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本地套接字是否更高效?

php – 在HHVM上使用Proxygen或NGINX FastCGI本地套接字是否更高效?

HHVM有一个内置的服务器,proxygen.您可以使用proxygen服务器运行HHVM或以FastCGI模式运行HHVM,使用其他服务器(如Nginx或apache)来处理Web请求.

我找不到任何基准或权威来源,它们提供了两个选项中哪个选项表现最佳的任何指示.显然,我可以配置两个系统在不同的并发组合下手动测试各种负载并组合一个基准测试,但如果有人已经做过这样的比较,我宁愿避免工作.

从一个纯粹的性能角度来看,有没有人知道哪个是更好的选择?

解决方法

我还没有做过任何测量.但从理论上讲,proxygen服务器性能更高,因为它在与PHP工作线程相同的进程中运行,从而避免了一些开销的进程间通信.在Facebook上使用proxygen服务器并且做出一些努力以使其更可靠,例如,当JIT编译器没有完全预热时的保护机制.但是,这些对其他用户来说无关紧要.如果您已经安装了自己喜欢的apache / Nginx,并且不想花时间调整其他http服务器的设置,请使用FastCGI.

我们今天的关于使用NumPy计算的此代码能否更高效?如何使用numpy的分享就到这里,谢谢您的阅读,如果想了解更多关于numpy计算路线距离、NumPy:使用nditer迭代numpy数组的外部尺寸、Numpy:使用numpy.sort()、numpy.argsort()获取排序后的值、php – 在HHVM上使用Proxygen或NGINX FastCGI本地套接字是否更高效?的相关信息,可以在本站进行搜索。

本文标签: