所以,我一直在浏览stackoverflow已经很长一段时间了,但我似乎找不到解决问题的方法 考虑一下import numpy as np coo = np.array([[1, 2], [2, 3], [3, 4], [3, 4], [1, 2], [5, 6], [1, 2]]) values = np.array([1, 2, 4, 2, 1, 6, 1])coo数组包含(x,y)坐标位置x =(1,2,3,3,1,5,1)y =(2,3,4,4,2,6,2) 并且值为此网格点排列某种数据. 现在我想获得每个唯一网格点的所有值的平均值.例如,坐标(1,2)出现在位置(0,4,6),因此对于这一点,我...
在特定轴上求和数组时,专用数组方法array.sum(ax)实际上可能比for循环慢:v = np.random.rand(3,1e4)timeit v.sum(0) # vectorized method 1000 loops, best of 3: 183 us per looptimeit for row in v[1:]: v[0] += row # python loop 10000 loops, best of 3: 39.3 us per loop矢量化方法比普通的for循环慢4倍!这里(g)的内容(wr),我不能相信numpy中的矢量化方法比for循环更快吗?解决方法:不...
在我尝试对方差边界条件的2D数组的方差 – 协方差矩阵执行cholesky分解时,在某些参数组合下,我总是得到LinAlgError:矩阵不是正定的 – 无法计算Cholesky分解.不确定它是否是numpy.linalg或实现问题,因为脚本很简单:sigma = 3. U = 4def FromListToGrid(l_):i = np.floor(l_/U)j = l_ - i*Ureturn np.array((i,j))Ulist = range(U**2)Cov = [] for l in Ulist:di = np.array([np.abs(FromListToGrid(l)[0]-FromListToGrid(i)[0]) ...
我想将一个int16数组乘以浮点数组,并使用自动舍入,但这会失败:import numpyA = numpy.array([1, 2, 3, 4], dtype=numpy.int16) B = numpy.array([0.5, 2.1, 3, 4], dtype=numpy.float64)A *= B我明白了:TypeError: Cannot cast ufunc multiply output from dtype(‘float64’) to dtype(‘int16’) with casting rule ‘same_kind’解决方法:解决这个问题的两种方法: 您可以通过替换来解决此问题A *= B同A = (A * B)或者numpy.m...
如果我有一个numpy数组列表,那么使用remove方法返回一个值错误. 例如:import numpy as npl = [np.array([1,1,1]),np.array([2,2,2]),np.array([3,3,3])]l.remove(np.array([2,2,2]))会给我的ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()我似乎无法让all()工作,这是不可能的吗?解决方法:这里的问题是当两个numpy数组与==进行比较时,就像在remove()和index()方法中一...
我有一个像下面这样的numpy数组:Xtrain = np.array([[1, 2, 3],[4, 5, 6],[1, 7, 3]])我想分别对每行的项进行随机播放,但不希望每行的shuffle相同(如在几个示例中只是随机播放列顺序). 例如,我想要一个如下输出:output = np.array([[3, 2, 1],[4, 6, 5],[7, 3, 1]])如何以有效的方式随机随机地随机移动每一行?我的实际np数组超过100000行和1000列.解决方法:由于您只想对列进行随机播放,因此只需在矩阵的转置上执行shuffling即可...
如果我有一个NumPy数组,例如53,有没有办法一列一列地解压缩它以传递给函数而不是像这样:my_func(arr [:,0],arr [:,1], arr [:,2])? 有点像* args列表拆包但是按列.解决方法:您可以解压缩数组的转置,以便使用函数参数的列:my_func(*arr.T)这是一个简单的例子:>>> x = np.arange(15).reshape(5, 3) array([[ 0, 5, 10],[ 1, 6, 11],[ 2, 7, 12],[ 3, 8, 13],[ 4, 9, 14]])让我们编写一个函数来将列添加到一起(通常在NumP...
如果我运行以下代码:import numpy as npb = np.zeros(1) c = np.zeros(1) c = c/2**63print b, c b += c我收到此错误消息:TypeError: ufunc 'add' output (typecode 'O') could not be coerced to provided output parameter (typecode 'd') according to the casting rule ''same_kind''如果我将b = c更改为b = b c,则代码运行正常.为什么会这样?我在RHEL上运行Python 2.7.2. NumPy版本:2.0.0.dev-a2a9dfb GCC版本:4.1.2 200...
我有一个2-d numpy数组,我想要洗牌.最好的方法是将它重塑为1-d,重新洗牌并再次重塑为2-d,还是可以在不重塑的情况下进行洗牌? 只使用random.shuffle不会产生预期的结果,numpy.random.shuffle只会洗牌:import random import numpy as np a=np.arange(9).reshape((3,3)) random.shuffle(a) print a[[0 1 2][3 4 5][3 4 5]]a=np.arange(9).reshape((3,3)) np.random.shuffle(a) print a[[6 7 8][3 4 5][0 1 2]]解决方法:你可以告诉np...
我有以下问题.存在矩阵X并且我需要生成矩阵H,使得矩阵H中的第i行的值由矩阵X的第i行和矩阵H的第(i-1)行确定.H_{i} = F(X_{i}, H_{i-1})为了计算矩阵H的第一行,我们使用一个特殊的矩阵外行(行0,所以说). 有没有办法以矢量化的形式有效地实现这种重现,而不使用for循环?解决方法:除了显式的for循环之外,没有其他方法(通常).这是因为无法跨行并行化此任务(因为每行依赖于其他行). 更难的是你可以轻松生成chaotic behavior,例如看似无辜...
如果我只有numpy.array的字符串表示形式:>>> import numpy as np >>> arr = np.random.randint(0, 10, (10, 10)) >>> print(arr) # this one! [[9 4 7 3][1 6 4 2][6 7 6 0][0 5 6 7]]如何将其转换回numpy数组?实际插入手动并不复杂,但我正在寻找一种程序化方法. 一个简单的正则表达式替换空格,实际上适用于单位数整数:>>> import re >>> sub = re.sub('\s+', ',', """[[8 6 2 4 0 2] ... [3 5 8 4 5 6] ... [4 6 3 3 0 3]] ...
我想计算numpy ndarray的元素平均值.In [56]: a = np.array([10, 20, 30])In [57]: b = np.array([30, 20, 20])In [58]: c = np.array([50, 20, 40])我想要的是:[30, 20, 30]除了矢量化和和除以外,是否有任何内置函数用于此操作?解决方法:你可以直接使用np.mean:>>> np.mean([a, b, c], axis=0) array([ 30., 20., 30.])
在Numpy中使用odeint进行模拟期间保存中间变量的最简单方法是什么? 例如:def dy(y,t)x = np.rand(3,1)return y + x.sum()sim = odeint(dy,0,np.arange(0,1,0.1))在模拟过程中保存x中存储数据的最简单方法是什么?理想情况下,在传递给odeint的t参数中指定的点.解决方法:通过一些注意事项来解决odeint的一种方便方法是在类中使用dy将调用包含在odeint中,使用dy作为另一种方法,并将self作为参数传递给dy函数.例如,class WrapODE(obj...
有没有人知道如何在矩阵中逐行获取唯一元素.对于例如输入矩阵可能如下:a = [[1,2,1,3,4,1,3],[5,5,3,1,5,1,2],[1,2,3,4,5,6,7],[9,3,8,2,9,8,4],[4,6,7,4,2,3,5]]它应该返回以下内容:b = rowWiseUnique(a) => b = [[1,2,3,4,0,0,0],[5,3,1,2,0,0,0],[1,2,3,4,5,6,7],[9,3,8,2,4,0,0],[4,6,7,2,3,5,0]]在numpy中这样做最有效的方法是什么?我尝试了以下代码,有没有更好更短的方法呢?import numpy as np def uniqueRowElements(r...
我正在使用OpenCV 2在YCbCr色彩空间中进行一些图像处理.目前我可以检测到由于转换RGB而产生的一些噪音 – > YCbCr然后YCbCr – > RGB,但如documentation所述:If you use cvtColor with 8-bit images, the conversion will have some information lost. For many applications, this will not be noticeable but it is recommended to use 32-bit images in applications that need the full range of colors or that convert an ...