【python – 检查numpy数组的子维度中的元素是否在另一个numpy数组的子维度中的快速方法】教程文章相关的互联网学习教程文章

python – 索引4D数组的NumPy数组【代码】

我有一个4D数组’a’大小(2,3,4,4)填充零.import numpy as np a = np.zeros((2,3,4,4))我还有一个大小为(2,3,4)的3D数组’b’,它带有一些索引值(全部在0到3之间). 我想要做的是将’a’中的每个最后一个数组的元素(‘a’的第四个维度)替换为’b’中的索引,使用1. 我可以使用3 for循环执行此操作,如下所示:for i in a.shape[0]:for j in a.shape[1]:for z in a.shape[2]:a[i,j,z][b[i,j,z]] = 1 但我想知道无论如何我都可以避免循环...

如何以优雅高效的方式将python callable映射到numpy数组?【代码】

规范方法(使用np.vectorize())在空数组的情况下不起作用 – 它以IndexError结束:索引0超出了0的大小为0的范围:>>> def f(x): ... return x + 1 ... >>> F = np.vectorize(f) >>> F(np.array([])) [Traceback removed] IndexError: index 0 is out of bounds for axis 0 with size 0目前我使用>>> np.array([f(x) for x in X])但我正在寻找更优雅的解决方案(和高效).在Python 2中,我可以选择>>> np.array(map(f, X))但它在Pyt...

python – 使用cython将numpy数组列表传递给C.【代码】

我有一个列表list_of_arrays的3D numpy数组,我想用模板传递给C函数int my_func_c(double **data, int **shape, int n_arrays)这样的data[i] : pointer to the numpy array values in list_of_arrays[i] shape[i] : pointer to the shape of the array in list_of_arrays[i] e.g. [2,3,4]如何使用cython接口函数调用my_func_c? 我的第一个想法是做类似下面的事情(有效),但我觉得有一个更好的方法就是使用numpy数组而不需要malloci...

python – 添加不同形状的numpy数组【代码】

我想添加两个不同形状的numpy数组,但没有广播,而是将“缺失”值视为零.像一个例子可能最简单[1, 2, 3] + [2] -> [3, 2, 3]要么[1, 2, 3] + [[2], [1]] -> [[3, 2, 3], [1, 0, 0]]我事先不知道形状. 我正在弄乱每个np.shape的输出,试图找到包含它们的最小形状,将每个形状嵌入该形状的零编辑数组然后添加它们.但似乎有很多工作,是否有更简单的方法? 提前致谢! 编辑:通过“很多工作”我的意思是“为我做了很多工作”而不是机器,我寻...

python – 在numpy数组中找到最大上三角形条目索引的有效方法?【代码】

更具体地说,我有一个行/列列表,在选择最大条目时需要忽略.换句话说,当选择最大上三角形条目时,需要跳过某些索引.在这种情况下,找到最大上三角形入口位置的最有效方法是什么? 例如:>>> a array([[0, 1, 1, 1],[1, 2, 3, 4],[4, 5, 6, 6],[4, 5, 6, 7]]) >>> indices_to_skip = [0,1,2]我需要在上三角形中的所有元素中找到min元素的索引,除了条目a [0,1],a [0,2]和a [1,2].解决方法:你可以使用np.triu_indices_from:>>> np.vstack...

python – 折叠numpy数组的尾随维度的简单方法?【代码】

在Matlab中,我可以执行以下操作:X = randn(25,25,25); size(X(:,:))ans = 25 625我经常发现自己想要快速折叠数组的尾随维度,并且不知道如何在numpy中执行此操作. 我知道我可以这样做:In [22]: x = np.random.randn(25,25,25) In [23]: x = x.reshape(x.shape[:-2] + (-1,)) In [24]: x.shape Out[24]: (25, 625)但是x.reshape(x.shape [: – 2](-1,))比简单地做x(:,:)更简洁(并且需要更多关于x的信息). 我显然尝试过类似的n...

python – 如何将numpy数组中的相同元素移动到子数组中【代码】

如何有效地将已排序的numpy数组中的相同元素移动到子数组中? 从这里:import numpy as np a=np.array([0,0,1,1,1,3,5,5,5])到这里:a2=array([[0, 0], [1, 1, 1], [3], [5, 5, 5]], dtype=object)解决方法:一种方法是获取轮班位置,数字发生变化,并使用这些索引将输入数组拆分为子阵列.要查找这些索引,可以在差分数组上使用np.nonzero,然后使用np.split进行拆分,如下所示 – np.split(a,np.nonzero(np.diff(a))[0]+1)样品运行...

python – 计算numpy数组中列的出现次数【代码】

给定2 x d维numpy数组M,我想计算M的每列的出现次数.也就是说,我正在寻找bincount的通用版本. 到目前为止我尝试过:(1)将列转换为元组(2)使用numpy.bincount将哈希元组(通过哈希)转换为自然数(3). 这看起来很笨拙.有人知道更优雅高效的方式吗?解决方法:你可以使用collections.Counter:>>> import numpy as np >>> a = np.array([[ 0, 1, 2, 4, 5, 1, 2, 3], ... [ 4, 5, 6, 8, 9, 5, 6, 7], ... ...

python – 这个numpy数组索引的较短版本【代码】

我在python(numpy数组或scipy.sparse.matrices)中有以下代码,它有效:X[a,:][:,b]但它看起来并不优雅. ‘a’和’b’是一维布尔掩码. ‘a’与X.shape [0]具有相同的长度,’b’与X.shape [1]具有相同的长度 我试过X [a,b]但它不起作用. 我想要完成的是同时选择特定的行和列.例如,选择第0,7,8行,然后从该结果中选择第2,3,4列中的所有行 你会如何让它更短更优雅?解决方法:你可以使用np.ix_进行这样的广播索引,就像这样 – X[np.ix_(a,...

python – 从不同大小的较小数组构造单个numpy数组【代码】

我有一个值数组,x.给定’start’和’stop’索引,我需要使用x的子数组构造一个数组y.import numpy as np x = np.arange(20) start = np.array([2, 8, 15]) stop = np.array([5, 10, 20]) nsubarray = len(start)我希望在哪里:y = array([ 2, 3, 4, 8, 9, 15, 16, 17, 18, 19])(实际上我使用的数组要大得多). 构造y的一种方法是使用列表推导,但之后需要将列表展平:import itertools as it y = [x[start[i]:stop[i]] for i in r...

python – 求和2个Numpy数组之间的平方差【代码】

参见英文答案 > NumPy Broadcasting: Calculating sum of squared differences between two arrays 2个假设我有以下2个数组:import numpy as np a=np.asarray([[1,2,4],[3,1,2]]) b=np.asarray([[2,1,1],[3,2,3],[4,1,2],[2,2,1],])对于a中的每一行a_row,我想得到a_row和b中每一行之间的平方差的总和.结果数组将是一个2乘4的数组.预期结果如下:array([[ 11., 5., 14., 10.],[ 2., 2.,...

python – 从函数式语言访问numpy数组

我的主要语言是Python.通常,当我需要在numpy数组上执行一些cpu繁重的任务时,我使用scipy.weave.inline来连接c并获得很好的结果. 我怀疑许多算法(机器学习的东西)可以用函数式语言(scheme,haskell ……)编写得更简单. 我刚在想.是否可以从函数式语言访问numpy数组数据(读取和写入)而不必使用c?最佳答案:您可能会看一下使用某种共享内存数组.这个实现可能是一个很好的起点:https://bitbucket.org/cleemesser/numpy-sharedmem/src 此...

numpy数组和python数组的区别

1、numpy数组创建时是固定大小,python数组(list)是动态的。更改ndarray的大小将创建一个新数组并删除原来的数组。 2、元素类型区别。NumPy数组中的元素都需要具有相同的数据类型,因此在内存中的大小相同。python的List可以存放不同类型的元素。例外情况:Python的原生数组里包含了NumPy的对象的时候,这种情况下就允许不同大小元素的数组。 3、数学操作执行效率高于原生python 4、越来越多的基于Python的科学和数学软件包使用N...

Python数据分析学习(二):Numpy数组对象基础

1.1数组对象基础 <style> .caret,.dropup > .btn > .caret {border-top-color: #000 !important;}.label {border: 1px solid #000;}.table {border-collapse: collapse !important;}.table td,.table th {background-color: #fff !important;}.table-bordered th,.table-bordered td {border: 1px solid #ddd !important;} } @font-face {font-family: 'Glyphicons Halflings';src: url('../components/bootstrap/fonts/glyphicons...

python学习笔记-Day2 Numpy数组

1. 实现两个数组相加,在数据量特别大的时候 产生数组: (1) 从列表产生数组:a=[0,1,2,3] a=np.array(1) a (2) 从列表传入 a=np.array([1,2,3,4]) (3) 生成全0的数组 np.zeros(5) (4) 生成全1的数组 np.ones(5,dtype=’bool’)dtype可以用来指定数据类型 (5) 可以使用fill方法将数组设为指定值 (6) 生成整数序列 a=np.arange(1,10)从1开始生成数据,一直到9 (7) 生成等差数列...

元素 - 相关标签