python-用矩阵作为元素的数组的Numpy intersect1d
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python-用矩阵作为元素的数组的Numpy intersect1d,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含939字,纯文字阅读大概需要2分钟。
内容图文
![python-用矩阵作为元素的数组的Numpy intersect1d](/upload/InfoBanner/zyjiaocheng/684/e8f891f49c4446dfa364bf1fa2a6d6c9.jpg)
我有两个数组,一个数组的形状为(200000,28,28),另一个数组的形状为(10000,28,28),因此实际上是两个以矩阵为元素的数组.
现在,我想计算并获得在两个数组中都重叠的所有元素(格式为(N,28,28)).使用普通的for循环,这是减慢速度的方法,因此我尝试使用numpys intersect1d方法进行尝试,但我不知道如何将其应用于此类数组.
解决方法:
使用this question about unique rows起的方法
def intersect_along_first_axis(a, b):
# check that casting to void will create equal size elements
assert a.shape[1:] == b.shape[1:]
assert a.dtype == b.dtype
# compute dtypes
void_dt = np.dtype((np.void, a.dtype.itemsize * np.prod(a.shape[1:])))
orig_dt = np.dtype((a.dtype, a.shape[1:]))
# convert to 1d void arrays
a = np.ascontiguousarray(a)
b = np.ascontiguousarray(b)
a_void = a.reshape(a.shape[0], -1).view(void_dt)
b_void = b.reshape(b.shape[0], -1).view(void_dt)
# intersect, then convert back
return np.intersect1d(b_void, a_void).view(orig_dt)
请注意,对浮点数使用void是不安全的,因为它将导致-0不等于0
内容总结
以上是互联网集市为您收集整理的python-用矩阵作为元素的数组的Numpy intersect1d全部内容,希望文章能够帮你解决python-用矩阵作为元素的数组的Numpy intersect1d所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。