如何在python中替换3d数组中的示例?

如何在python中替换3d数组中的示例?,python,numpy,numpy-ndarray,Python,Numpy,Numpy Ndarray,我有一个维度的3d数组(1000,300,3),我的3d数组 我想修改每个样本,如果这个数组,然后用修改过的替换旧版本。换句话说,我想以第一个示例(300,3)(我们称之为旧样本)为例,通过调用一个名为my_函数的函数对其进行一些修改,然后获得的新样本将替换my_3d_数组中的旧样本,依此类推。 我们该怎么做呢?我不确定这是否是您想要的,但您可以使用正常的索引符号: #只是一个示例数组 my_3d_array=np.random.random((1000300,3)) #提取旧样本 old_sa

我有一个维度的3d数组(1000,300,3),我的3d数组

我想修改每个样本,如果这个数组,然后用修改过的替换旧版本。换句话说,我想以第一个示例(300,3)(我们称之为旧样本)为例,通过调用一个名为my_函数的函数对其进行一些修改,然后获得的新样本将替换my_3d_数组中的旧样本,依此类推。
我们该怎么做呢?

我不确定这是否是您想要的,但您可以使用正常的索引符号:

#只是一个示例数组
my_3d_array=np.random.random((1000300,3))
#提取旧样本
old_sample=my_3d_数组[0,:,:]
#变换样本
新样本=我的样本函数(旧样本)
#将样本写回原始数组
my_3d_数组[0,:,:]=新的_示例

如果您想对所有样本进行相同的转换,那么将
my_函数
矢量化,一次处理所有样本,而不是使用python循环,这可能是有益的。

一般来说,这是我正在寻找的解决方案。它适用于一个样本。但我正在寻找是否可以一次将我的函数应用于所有1000个样本。在数组的第一维上使用
for
循环不是一个选项吗?使用循环将效率低下,因为我的3d数组可能是一个巨大的数组。numpy中有辅助函数,例如
沿数组轴应用
向量化
。可以使用这些函数,但我怀疑它们是否能显著提高性能,因为它们还必须调用python函数,调用次数与数组中的示例次数相同。如果
my_函数
只使用numpy函数,您可以尝试直接对函数进行矢量化,这可能会提供最佳性能。my_函数使用np.random.normal(loc=0,scale=scale_value,size=sample.shape),有时使用np.matmul()。所以我认为向量化我的函数是最好的解决方案