小编pd *_*hah的帖子

Numpy相当于if/else没有循环

是否有任何pythonic方法删除for循环和if/else在下面的代码中.

此代码迭代NumPy数组并检查条件并根据条件更改值.

>>> import numpy as np
>>> x=np.random.randint(100, size=(10,5))
>>> x
array([[79, 50, 18, 55, 35],
       [46, 71, 46, 95, 52],
       [97, 37, 71,  2, 79],
       [80, 96, 60, 85, 72],
       [ 6, 52, 63, 86, 38],
       [35, 50, 13, 93, 54],
       [69, 21,  4, 40, 53],
       [83,  7, 30, 16, 78],
       [18, 34, 91, 67, 89],
       [82, 16, 16, 24, 80]])

>>> for i in range(x.shape[0]):
    for j in range(x.shape[1]):
        if x[i,j]>50:
            x[i,j]=0
        elif x[i,j]<50:
            x[i,j]=1


>>> x …
Run Code Online (Sandbox Code Playgroud)

python numpy vectorization

13
推荐指数
2
解决办法
2万
查看次数

np.random.choice:概率不等于1

如何在这里使用np.random.choice? 可以p通过一些操作来计算,例如:

 p=[  1.42836755e-01,   1.42836735e-01  , 1.42836735e-01,   1.42836735e-01
,   4.76122449e-05,   1.42836735e-01  , 4.76122449e-05  , 1.42836735e-01,
   1.42836735e-01,   4.76122449e-05]
Run Code Online (Sandbox Code Playgroud)

通常,和p不精确等于1:

>>> sum(p)
1.0000000017347
Run Code Online (Sandbox Code Playgroud)

我想通过概率= p来随机选择:

>>> np.random.choice([1,2,3,4,5,6,7,8,9, 10], 4, p=p, replace=False)
array([4, 3, 2, 9])
Run Code Online (Sandbox Code Playgroud)

这项工作在这里!但是在程序中有一个错误:

Traceback (most recent call last):
    indexs=np.random.choice(range(len(population)), population_number, p=p, replace=False)
  File "mtrand.pyx", line 1141, in mtrand.RandomState.choice (numpy/random/mtrand/mtrand.c:17808)
ValueError: probabilities do not sum to 1
Run Code Online (Sandbox Code Playgroud)

如果我打印p

[  4.17187500e-05   2.49937500e-01   4.16562500e-05   4.16562500e-05
   2.49937500e-01   4.16562500e-05   4.16562500e-05   4.16562500e-05
   2.49937500e-01   2.49937500e-01]
Run Code Online (Sandbox Code Playgroud)

但是它可以通过以下方式在python shell中工作p

>>> p=[  4.17187500e-05 …
Run Code Online (Sandbox Code Playgroud)

python numpy

6
推荐指数
3
解决办法
6383
查看次数

在两个数组中打印不匹配项

我想比较两个数组(4个浮点数)并打印不匹配的项目。我使用以下代码:

>>> from numpy.testing import assert_allclose as np_assert_allclose
>>> x=np.array([1,2,3])
>>> y=np.array([1,0,3])
>>> np_assert_allclose(x,y, rtol=1e-4)

AssertionError: 
Not equal to tolerance rtol=0.0001, atol=0

(mismatch 33.33333333333333%)
 x: array([1, 2, 3])
 y: array([1, 0, 3])
Run Code Online (Sandbox Code Playgroud)

此代码的问题是大数组:

(mismatch 0.0015104228617559556%)
 x: array([ 0.440088,  0.35994 ,  0.308225, ...,  0.199546,  0.226758,  0.2312  ])
 y: array([ 0.44009,  0.35994,  0.30822, ...,  0.19955,  0.22676,  0.2312 ])
Run Code Online (Sandbox Code Playgroud)

我找不到什么值不匹配。怎么能看到他们?

numpy python-3.x

5
推荐指数
1
解决办法
377
查看次数

在python3.x中计算ASPECT,SLOPE(matlab梯度函数)

gradientm是一个 matlab 函数,用于计算数据网格的梯度slope、 和aspect

句法

[ASPECT, SLOPE, gradN, gradE] = gradientm(Z, R)

描述

[ASPECT, SLOPE, gradN, gradE] = gradientm(Z, R) 计算常规数据网格 Z 相对于参考 R 的坡度、坡向以及坡度的北和东分量。如果网格包含以米为单位的高程,由此产生的坡度和坡度以从北和从水平向上顺时针的度数为单位。北向和东向梯度分量是地图变量在北向和东向每米距离的变化。该计算对默认地球椭球体上的地图变量使用有限差分。

问题

我想要一些东西equivalent in python。我已经创建了这个 python 库PyDEM但它是用于 python 2.x 但我正在使用python 3.x

这是使用的方式DEMProcessor来计算slope,并aspectDEM文件的PyDEM

# needs to match above command
filename = 'Shasta-30m-DEM.tif'

# instantiate a processor object
processor = DEMProcessor(filename)

# get magnitude of slope and aspect
mag, …
Run Code Online (Sandbox Code Playgroud)

equivalent python-3.x

3
推荐指数
1
解决办法
3696
查看次数

为什么 skimage 均值过滤器不适用于浮点数组?

例如,我将在浮点数组上应用平均过滤器window_size=3。我找到了这个库:

from skimage.filters.rank import mean
import numpy as np

x=np.array([[1,8,10],
           [5,2,9],
           [7,2,9],
           [4,7,10],
           [6,14,10]])

print(x)
print(mean(x, square(3)))


[[ 1  8 10]
 [ 5  2  9]
 [ 7  2  9]
 [ 4  7 10]
 [ 6 14 10]]
[[ 4  5  7]
 [ 4  5  6]
 [ 4  6  6]
 [ 6  7  8]
 [ 7  8 10]]
Run Code Online (Sandbox Code Playgroud)

但是这个函数不能在浮点数组上运行:

from skimage.filters.rank import mean
import numpy as np

x=np.array([[1,8,10],
           [5,2,9],
           [7,2,9],
           [4,7,10],
           [6,14,10]])

print(x)
print(mean(x.astype(float), square(3)))

File "/home/pd/RSEnv/lib/python3.5/site-packages/skimage/util/dtype.py", line 236, …
Run Code Online (Sandbox Code Playgroud)

python filtering mean scikit-image

2
推荐指数
1
解决办法
1857
查看次数