如何解决将函数应用于 NumPy 数组的唯一值
我有一个函数 f
,我想将它应用于任意形状和有序的 NumPy 数组 x
的所有元素。由于函数求值代价高昂且 x
可能包含重复值,因此我首先将 x
简化为唯一值,即一维数组 xu
。
xu,ind = np.unique(x,return_inverse=True)
然后我为函数值创建一个数组
yu = np.full(len(xu),np.nan)
并通过应用 f
元素来填充此数组。
我现在想创建一个与 y
形状相同的数组 x
,以便相应的条目包含函数的结果。我的尝试:
y = np.full(x.shape,np.nan)
y[ind] = yu
如果 x
不是一维的,则失败。 (你可能猜到我已经习惯了 Matlab,其中多维数组的线性索引工作。)为此我需要的是 y
上的一维视图,我可以将 [ind] =
应用于,分配给正确的元素。
问题 1:多维数组上有这样的一维视图吗?
或者,我可以将 y
创建为一维,分配值,然后重塑。
y = np.full(x.size,np.nan)
y[ind] = yu
y = np.reshape(y,x.shape)
这似乎有效,但我不确定是否必须考虑 x
的存储顺序。
问题 2: ind
返回的 np.unique
是否总是遵循 'C' 顺序,这是 np.reshape
的默认值,还是取决于内部x
的结构?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。