相关疑难解决方法(0)

从给定步幅/步长的numpy数组中取出子阵列

假设我有一个Python Numpy数组a.

a = numpy.array([1,2,3,4,5,6,7,8,9,10,11])
Run Code Online (Sandbox Code Playgroud)

我想从这个长度为5的数组创建一个子序列矩阵,步长为3.结果矩阵因此如下所示:

numpy.array([[1,2,3,4,5],[4,5,6,7,8],[7,8,9,10,11]])
Run Code Online (Sandbox Code Playgroud)

实现这一点的一种可能方式是使用for循环.

result_matrix = np.zeros((3, 5))
for i in range(0, len(a), 3):
  result_matrix[i] = a[i:i+5]
Run Code Online (Sandbox Code Playgroud)

有没有更简洁的方法来实现这个Numpy?

python numpy vectorization

25
推荐指数
2
解决办法
5634
查看次数

在pandas Intervalindex中查找匹配间隔

Intervalindex在0.20中有一个名为new 的有趣API ,它允许您创建间隔索引.

给出一些样本数据:

data = [(893.1516130000001, 903.9187099999999),
 (882.384516, 893.1516130000001),
 (817.781935, 828.549032)]
Run Code Online (Sandbox Code Playgroud)

您可以像这样创建索引:

idx = pd.IntervalIndex.from_tuples(data)

print(idx)
IntervalIndex([(893.151613, 903.91871], (882.384516, 893.151613], (817.781935, 828.549032]]
              closed='right',
              dtype='interval[float64]')
Run Code Online (Sandbox Code Playgroud)

Intervals的一个有趣的属性是你可以执行间隔检查in:

print(y[-1])
Interval(817.78193499999998, 828.54903200000001, closed='right')

print(820 in y[-1])
True

print(1000 in y[-1])
False
Run Code Online (Sandbox Code Playgroud)

我想知道如何将此操作应用于整个索引.例如,给定一些数字900,我如何检索此数字适合的区间的布尔掩码?

我能想到:

m = [900 in y for y in idx]
print(m)
[True, False, False]
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法来做到这一点?

python intervals pandas

12
推荐指数
2
解决办法
2541
查看次数

有效地使用多个块状切片进行随机图像裁剪

我有一个4-D numpy数组,第一个维度表示数据集中的图像数量,第二个和第三个维度表示(相等)宽度和高度,第四个维度表示通道数(3)。例如,假设我有4张28 * 28彩色图像,所以我的图像数据如下所示:

X = np.reshape(np.arange(4*28*28*3), (4,28,28,3))
Run Code Online (Sandbox Code Playgroud)

我想为4张图片中的每张图片随机选择16 * 16宽x高的裁剪。至关重要的是,我希望每个图像的裁切是不同的,即我想生成4个随机(x_offset,y_offset)对。最后,我要访问形状数组(4、16、16、3)。

如果我要在for循环中编写此代码,它将类似于以下内容:

x = np.random.randint(0,12,4)
y = np.random.randint(0,12,4)
for i in range(X.shape[0]):
    cropped_image = X[i, x[i]:x[i]+16, y[i]:y[i]+16, :]
    #Add cropped image to a list or something
Run Code Online (Sandbox Code Playgroud)

但是我想尽可能高效地做到这一点,并且我想知道是否有一种方法可以大步前进和花哨的索引编制。我已经看到了问题的答案,但无法完全理解如何将stride_tricks之类的东西与第二和第三(宽度和高度)轴上的步幅的随机起点组合在一起。

python numpy image-processing

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