python - 如何将包含随机数的函数应用于 python 中的 numpy 数组的行?

标签 python arrays numpy

所以我有一个形状为 (28, 28, 60000) 的 3D 数组,对应于 60000 张 28x28 图像。我想通过使用以下函数获取每个图像的随机 24x24 block :

def crop(X):
    x = random.randint(0,3)
    y = random.randint(0,3)
    return X[x:24+x, y:24+y,]

但是,如果我将函数 crop(X) 应用于我的矩阵 X,则会返回每个样本的相同 block 。如何确保每个样本使用不同的随机生成的 xy 值?

最佳答案

这是我的尝试。

基本上这个想法是你将不得不以某种方式将矩阵从最后一个维度分开(numpy 不允许你应用不是一维数组的东西)。您可以使用 dsplit 执行此操作,然后使用 dstack 将其重新组合在一起。

然后您将在每个组件上应用裁剪功能。作为一个简化的例子:

import random

a = np.array(range(300)).reshape(10,10,3)

def crop(X):
    x = random.randint(0,3)
    y = random.randint(0,3)
    return X[x:3+x, y:3+y]

# we can loop over each component of the matrix by first splitting it
# off the last dimension:
b = [np.squeeze(x) for x in np.dsplit(a, a.shape[-1])]

# this will recreate the original matrix
c = np.dstack(b)

# so putting it together with the crop function
get_rand_matrix = [crop(np.squeeze(x)) for x in np.dsplit(a, a.shape[-1])]
desired_result = np.dstack(get_rand_matrix)

关于python - 如何将包含随机数的函数应用于 python 中的 numpy 数组的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36930755/

相关文章:

javascript - 如何确定对象中的任何数组是否有条目

python - 根据另一个数组对齐 numpy 数组

C中的数组可以存储在非顺序指针中吗?

Python Map() 反转

python - django:尝试访问我的 robots.txt: "TypeError at/robots.txt ' str'对象不可调用”

python - finally block 可以知道是否有异常吗

python - Scipy kstest 对于相似的值集返回不同的 p 值

python - 在没有 root 权限的情况下安装 matplotlib 及其依赖项

python - 如何在 python matplotlib colormap 中增加颜色分辨率

Python:交叉索引numpy数组