首页 > TAG信息列表 > numpy-broadcasting

如何实现maxpool:在图像或张量的滑动窗口上获取最大值

简而言之:我正在寻找Maxpool的一个简单的numpy(也许是oneliner)实现-在numpy.narray上的窗口上,该窗口在所有尺寸上的所有位置都达到最大值. 更详细地讲:我正在实现一个卷积神经网络(“ CNN”),这种网络中的典型层之一是MaxPool层(例如here).写作 y = MaxPool(x,S),x是输入narray,S是

python-在numpy数组中加权平面的最佳方法是什么?

我有以下代码,其中w是兼容维的一维numpy数组,而M是4D数组, i = 0 for weight in w: M[:, :, i, :] *= weight i += 1 有没有更好的方法可以达到相同的效果?解决方法:您将使用w中的元素沿轴= 2缩放M,这是一维数组.因此,您需要将w扩展到np.newaxis/None的2D数组,这将使w的扩

python-根据列表的Numpy折叠列

在NumPy中,我有一个adxn数组A和一个长度为n的列表L,描述了我希望A的每一列在矩阵B中结束的位置.想法是矩阵B的第i列是A的所有列的总和L中的对应值为i. 我可以使用for循环来做到这一点: A = np.arange(15).reshape(3,5) L = [0,1,2,1,1] n_cols = 3 B = np.zeros((len(A), n_cols))

使用numpy.frompyfunc通过参数向python函数添加广播

从像db这样的数组(大约是(1e6,300))和mask = [1,0,1]向量,我在第一列中将目标定义为1. 我想创建一个out向量,其中包含db中相应行与mask和target == 1匹配的向量,以及其他地方的零. db = np.array([ # out for mask = [1, 0, 1] # target, vector # [1, 1, 0, 1]

python – Numpy数组广播规则

我在Numpy中理解阵列广播的规则时遇到了一些麻烦. 显然,如果你在两个相同尺寸和形状的数组上执行逐元素乘法,一切都很好.此外,如果您将多维数组乘以标量,它就可以工作.我明白了. 但是如果你有两个不同形状的N维阵列,我不清楚我究竟是什么广播规则. documentation/tutorial解释说:为

python – 由不同形状的DataFrame(或系列)乘以DataFrame

我有这样的DataFrame: 1 2 1 3 1 4 2 4 5 1 1 4 1 3 5 3 1 4 1 3 1 3 1 4 另一个像这样 1 1 0 0 0 0 我希望将它们与我得到的相乘 1 2 0 0 0 0 2 4 0 0 0 0 1 3 0 0 0 0 1 3 0 0 0 0 所以发生的事情是,每秒在第二个df中带有1的

python – 做列表外部产品的numpy方式

我正在尝试对60000×100矩阵的外积进行归一化求和.我想用numpy方式来做,因为我的解决方案受到列表解析中的python for循环的约束: def covariance_over_time(X): B = np.sum(np.array([np.outer(x, x) for x in X]),axis=0) B = np.true_divide(B, len(X))

如何使用numpy广播在条件下组合多索引列值

我有一个问题,我99%肯定有一个numpy广播解决方案,但我无法弄清楚.假设我有以下数据帧: iterables = [['US', 'DE'], ['A', 'B'], [1, 2, 3, 4, 5]] idx3 = pd.MultiIndex.from_product(iterables, names=['v1', 'v2', 'v3']) df3 = pd.D

python – Numpy:如何向量化应用于数据集的函数的函数形式的参数

最后,我想删除下面代码中的所有显式循环,以利用C中的numpy向量化和函数调用而不是python. 下面简化了python中numpy的使用. 我有以下二次函数: def quadratic_func(a,b,c,x): return a*x*x + b*x + c 我正在尝试优化a,b,c给定输入数据x和相同大小的输出数据y的选择(当然,这应

python中的自动数组微积分(numpy)

我有一个依赖于几个变量的函数,假设y = f(x1,x2,x3,x4).如果每个变量都是一个简单的数字,那么结果应该是一个普通的数字.如果其中一个变量是一个数组,我需要结果也是一个数组.依此类推:如果其中两个变量是数组,我需要将结果作为一个二维数组.等等. 例: def f(x1,x2,x3,x4): y=x1

python – 强制乘法使用__rmul __()而不是Numpy数组__mul __()或绕过广播

这个问题与Overriding other __rmul__ with your class’s __mul__中提出的问题很接近,但我认为这是一个更普遍的问题,只有数字数据.这也没有回答,我真的不想使用矩阵乘法@来进行此操作.因此,问题. 我有一个接受与标量和数值数组相乘的对象.像往常一样,左乘法工作正常,因为它是使用

Python,Numpy,在多个维度上添加数组的方法(广播)

我有许多不同大小的数组和一个共同的索引. 例如, Arr1 = np.arange(0, 1000, 1).reshape(100, 10) Arr2 = np.arange(0, 500, 1).reshape(100,5) Arr1.shape = (100, 10) Arr2.shape = (100, 5) 我想将它们一起添加到一个新的数组中,Arr3是三维的.例如 Arr3 = Arr1 + Arr2 Arr3

python – 对角线阵列上的numpy线性代数,没有明确的重复

我有一个数组w(形状(3000,100,100)),我想与另一个数组e(形状(5,3000))相乘,使得结果k具有形状(5,5,100,100)和 k[:, :, i, j] = e @ np.diag(w[:, i, j]) @ e.T 由于w太大,因此制作一些形状为(3000,3000,100,100)的super_w数组并明确填充主对角线是不实际的.循环遍历i和j也不是非

python – 取消广播Numpy数组

在一个大的代码库中,我使用np.broadcast_to来广播数组(这里只使用简单的例子): In [1]: x = np.array([1,2,3]) In [2]: y = np.broadcast_to(x, (2,1,3)) In [3]: y.shape Out[3]: (2, 1, 3) 在代码的其他地方,我使用的第三方函数可以在Numpy数组上以矢量化方式运行,但这不是uf

为什么Python / Numpy需要矩形/矢量点积的行向量?

假设我们想要计算矩阵和列向量的点积: 所以在Numpy / Python中我们走了: a=numpy.asarray([[1,2,3], [4,5,6], [7,8,9]]) b=numpy.asarray([[2],[1],[3]]) a.dot(b) 结果是: array([[13], [31], [49]]) 到目前为止,这么好,但为什么这也有效? b=numpy.asarray

python – 为什么numpy.broadcast“转置”vstack和类似函数的结果?

注意: In [1]: import numpy as np In [2]: x = np.array([1, 2, 3]) In [3]: np.vstack([x, x]) Out[3]: array([[1, 2, 3], [1, 2, 3]]) In [4]: np.vstack(np.broadcast(x, x)) Out[4]: array([[1, 1], [2, 2], [3, 3]]) 类似地,对于column_stack和row