草庐IT

2d-vector

全部标签

python - numba 中的@jit 和@vectorize 有什么区别?

什么时候应该使用@vectorize?我尝试了@jit并显示了下面的那部分代码,fromnumbaimportjit@jitdefkma(g,temp):k=np.exp(-(g+np.abs(g))/(2*temp))returnk但我的代码没有加速算法。为什么? 最佳答案 @vectorize用于编写可以一次将一个元素(标量)应用于数组的表达式。@jit装饰器更通用,可以处理任何类型的计算。文档中有对其他好处的详细讨论:http://numba.pydata.org/numba-doc/latest/user/vectorize

python - Python 中的分位数/中位数/2D 装箱

你知道以下问题的快速/优雅的Python/Scipy/Numpy解决方案吗:您有一组x、y坐标和关联值w(所有一维数组)。现在将x和y分箱到二维网格(大小为BINSxBINS)并计算每个分箱的w值的分位数(如中位数),这最终会产生具有所需分位数的BINSxBINS二维数组。使用一些嵌套循环很容易做到这一点,但我确信有更优雅的解决方案。谢谢,标记 最佳答案 这是我想出来的,我希望它有用。它不一定比使用循环更干净或更好,但也许它会让您开始朝着更好的方向发展。importnumpyasnpbins_x,bins_y=1.,1.x=np.a

python - 在 matplotlib 中分散一个 2D numpy 数组

我有一个像这样的4x4数据数组data=np.array([[0,1,1,1],[1,0,0,1],[1,1,1,0],[0,0,0,1]])现在我想将这个数组散布在二维绘图上。如果data[i,j]等于1,则在点(x,y)=(i,j)处应该有一个彩色点。我试过在matplotlib中使用散点图,但不知何故无法让它工作。 最佳答案 你可以用importnumpyasnpimportmatplotlib.pyplotaspltdata=np.array([[0,1,1,1],[1,0,0,1],[1,1,1,0],[0,0,0,1]]

python - 使用 hist2d 在 matplotlib 中创建对数线性图

我只是想知道这是否可以做到。我尝试使用numpylogspace显式设置bins,我还尝试将xscale设置为“log”。这些选项都不起作用。有人试过这个吗?我只想要一个带有对数x轴和线性y轴的二维直方图。 最佳答案 它无法正常工作的原因是plt.hist2d使用了pcolorfast方法,该方法对于大图像更有效,但不支持对数轴。要获得在对数轴上正确工作的二维直方图,您需要使用np.histogram2d和ax.pcolor自行制作。然而,这只是额外的一行代码。首先,让我们在线性轴上使用指数间隔的bin:importnumpyasn

python - 规范化 2D Numpy 数组 : Zero Mean Unit Variance

我有一个二维Numpy数组,我想在其中将每一列标准化为零均值和单位方差。因为我主要使用C++,所以我正在做的方法是使用循环迭代列中的元素并执行必要的操作,然后对所有列重复此操作。我想知道这样做的Pythonic方式。让class_input_data成为我的二维数组。我可以得到列的意思是:column_mean=numpy.sum(class_input_data,axis=0)/class_input_data.shape[0]然后我通过以下方式从所有列中减去平均值:class_input_data=class_input_data-column_mean到目前为止,数据应该是零均值

python - Numpy:索引 3D 数组,最后一个轴的索引存储在 2D 数组中

我有一个包含值的shape(z,y,x)的ndarray。我试图用shape(y,x)的另一个ndarray索引这个数组,它包含我感兴趣的值的z-index。importnumpyasnpval_arr=np.arange(27).reshape(3,3,3)z_indices=np.array([[1,0,2],[0,0,1],[2,0,1]])因为我的数组相当大,所以我尝试使用np.take来避免不必要的数组副本,但就是无法用它来索引3维数组。如何使用z_indices索引val_arr以获得所需z轴位置的值?预期结果将是:result_arr=np.array([[9,1,20]

python - 循环遍历 2d 子图,就好像它是 1-D

我正在尝试使用子图绘制许多数据,我没有遇到麻烦,但我想知道是否有一种方便的方法可以做到这一点。下面是示例代码。importnumpyasnpimportmathimportmatplotlib.pyplotaspltquantities=["sam_mvir","mvir","rvir","rs","vrms","vmax","jx","jy","jz","spin","m200b","m200c","m500c","m2500c","xoff","voff","btoc","ctoa","ax","ay","az"]#len(quantities)=21,justtomakethes

【剖析STL】vector

vector的介绍及使用1.1vector的介绍cplusplus.com/reference/vector/vector/vector是表示可变大小数组的序列容器。就像数组一样,vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素进行访问,和数组一样高效。但是又不像数组,它的大小是可以动态改变的,而且它的大小会被容器自动处理。本质讲,vector使用动态分配数组来存储它的元素。当新元素插入时候,这个数组需要被重新分配大小为了增加存储空间。其做法是,分配一个新的数组,然后将全部元素移到这个数组。就时间而言,这是一个相对代价高的任务,因为每当一个新的元素加入到

python - 将索引列表转换为 2D numpy 数组的最快方法

我有一个索引列表a=[[1,2,4],[0,2,3],[1,3,4],[0,2]]将其转换为1的numpy数组的最快方法是什么,其中每个索引显示1出现的位置?即我想要的是:output=array([[0,1,1,0,1],[1,0,1,1,0],[0,1,0,1,1],[1,0,1,0,0]])我事先知道数组的最大大小。我知道我可以遍历每个列表并在每个索引位置插入一个1,但是是否有更快/矢量化的方法来执行此操作?我的用例可能有数千行/列,我需要这样做数千次,所以越快越好。 最佳答案 这个怎么样:ncol=5nrow=len(a)o

python - 有没有办法在 Python 的 Matplotlib 中以点坐标绘制 Line2D?

在Matplotlib中绘制两点(x1,y1)和(x2,y2)之间的线非常简单Line2D:Line2D(xdata=(x1,x2),ydata=(y1,y2))但在我的特殊情况下,我必须在所有使用数据坐标的常规绘图之上使用点坐标绘制Line2D实例。这可能吗? 最佳答案 正如@tom提到的,关键是transformkwarg。如果您希望将艺术家的数据解释为“像素”坐标,请指定transform=IdentityTransform()。使用转换变换是matplotlib中的一个关键概念。转换获取艺术家数据所在的坐标,并将它们转换为显