栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

带有高级混合索引的Numpy子数组分配

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

带有高级混合索引的Numpy子数组分配

在将代码复制到问题时似乎有一些错误。

但是我怀疑索引存在一个已知问题:

In [73]: a=np.zeros((2,3,4)); b=np.ones((3,4)); I=np.array([0,1])

制作

I
2个元素。标引
b
给出预期的(3,2)形状。切片中的3行,
I
索引中的2列

In [74]: b[:,I].shapeOut[74]: (3, 2)

但是使用3d,

a
我们可以获得转置。

In [75]: a[0,:,I].shapeOut[75]: (2, 3)

和分配会产生错误

In [76]: b[:,I]=a[0,:,I]...ValueError: array is not broadcastable to correct shape

它将2元素的尺寸由

I
第一个定义,将3元素的尺寸从
:
第二个定义。这是前面已经讨论过的混合高级索引的一种情况-也存在一个错误问题。(我必须查一下)。

您可能正在使用较新的

numpy
(或
scipy
)并获得了不同的错误消息。

据记录,索引有两个数组或列表,中间是切片,将切片放在末尾,例如

In [86]: a[[[0],[0],[1],[1]],:,[0,1]].shapeOut[86]: (4, 2, 3)

发生同样的事情

a[0,:,[0,1]]
。但是有一个很好的论点,那就是不应该这样。

至于修复,您可以转置值或更改索引

In [88]: b[:,I]=a[0:1,:,I]In [90]: b[:,I]=a[0,:,I].TIn [91]: bOut[91]: array([[ 0.,  0.,  1.,  1.],       [ 0.,  0.,  1.,  1.],       [ 0.,  0.,  1.,  1.]])In [92]: b[:,I]=a[0][:,I]

https://github.com/numpy/numpy/issues/7030

https://github.com/numpy/numpy/pull/6256



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/645017.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号