小编wab*_*ash的帖子

我如何将这个嵌套的 for 循环编写为列表理解?

我正在处理 4D 数据集,其中有一个嵌套的 for 循环(4 个循环)。该for环路的作品,但它需要一段时间来运行:〜5分钟。我试图用列表理解来正确地写这个,但我对如何做到这一点感到困惑,因为我的嵌套循环:

data = np.random.rand(12, 27, 282, 375)

stdev_data = np.std(data, axis=1)

## nested for loop 

count = []

for i in range(data.shape[0]):
    for j in range(data.shape[1]):
        for lat in range(data.shape[2]):
            for lon in range(data.shape[3]):
                count.append((data[i, j, lat, lon] < -1.282 * stdev_data[i, lat, lon]).sum(axis=0))

reshape_counts = np.reshape(count, data.shape)
Run Code Online (Sandbox Code Playgroud)

这是我对列表理解的尝试:

i, j, lat, lon = data.shape[0], data.shape[1], data.shape[2], data.shape[3]
print(i, j, lat, lon)

test_list = [[(data < -1.282 * stdev_data).sum(axis=0) for lon in lat] …
Run Code Online (Sandbox Code Playgroud)

python arrays for-loop numpy jupyter

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

是否可以将数组切片以倒退?

我有一个以 1 为增量从 0 到 360 的经度值数组。

举个例子:

longitude = np.arange(1,361,1)

print(longitude)


[  1   2   3   4   5   6   7   8   9 ... 360]
Run Code Online (Sandbox Code Playgroud)

有没有办法对经度数组进行切片,以便我只以 1 为增量包含 1:20 和 275:360?

所以值 1 到 20 (1, 2, 3 ...) 和值 275 到 360 (275, 276, 277 ...)

我试过类似的东西:

test = longitude[1:10:275:360]
Run Code Online (Sandbox Code Playgroud)

但是从 python 的切片方法中,它认为它是 [start:stop:step size]...并且我收到一个错误:

  File "<ipython-input-73-39c4381fa9dd>", line 1
    test = longitude[1:10:275:360]
                             ^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题?

python arrays numpy jupyter

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

有没有办法在这个正态分布的区域着色?

我有一个分布图,但我想用某种颜色填充蓝色垂直虚线和分布图开头之间的区域。所以基本上,只需填写颜色,箭头所在的区域:

在此处输入图片说明

我尝试做 plt.fill_between... 但它覆盖了整个情节而不是一个特定区域。我如何只填写一个区域?

import numpy as np
from scipy import stats
import matplotlib.pyplot as plt

x = np.arange(-5, 5, 0.1) # x from -6 to 6 in steps of 0.1
y = 1 / np.sqrt(2 * np.pi) * np.exp(-x ** 2 / 4.)

std = np.std(y)

plt.plot(x,y, 'k')

plt.axvline(x=-20*std,color='blue', linestyle='--')
plt.fill_between(x,-4,10)
plt.ylim(0,.42)
plt.show()
Run Code Online (Sandbox Code Playgroud)

python numpy matplotlib jupyter

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

标签 统计

jupyter ×3

numpy ×3

python ×3

arrays ×2

for-loop ×1

matplotlib ×1