python - numpy索引意外行为
问题描述
我有一个bla
形状为 (6,4) 的 ndarray。当我打印它时,我得到:
[[0. 1. 1. 1.]
[0. 0. 0. 2.]
[0. 0. 0. 0.]
[0. 0. 0. 0.]
[0. 0. 0. 0.]
[0. 0. 0. 0.]]
都很正常。
但是,当我尝试从中获取元素时,bla[0][0]
我得到了IndexError: invalid index to scalar variable.
我可以得到第一行bla[0]
,它返回[0. 1. 1. 1.]
(如预期的那样)。但是,我无法获得第一列bla[:,0]
- 这会返回IndexError: too many indices for array
我以为我犯了某种用户错误,但在检查和重新检查之后,我无法理解问题可能是什么。np.zeros((6,4))[0][0]
按预期执行工作。
更新1
另一个奇怪的现象:np.zeros((6,4))==np.zeros(bla.shape)
给出True,但np.zeros(bla.shape)[0][0]
给出错误,而np.zeros((6,4))[0][0]
工作正常(直接来自输出bla.shape: (6, 4)
:)
repr(bla):
array([[0., 1., 1., 1.],
[0., 0., 0., 2.],
[0., 0., 0., 0.],
[0., 0., 0., 0.],
[0., 0., 0., 0.],
[0., 0., 0., 0.]])
UPDATE2 pickle.dumps(bla) 给出了这个:
b'\x80\x03cnumpy.core.multiarray\n_reconstruct\nq\x00cnumpy\nndarray\nq\x01K\x00\x85q\x02C\x01bq\x03\x87q\x04Rq\x05(K\x01K\x06K\x04\x86q\x06cnumpy\ndtype\nq\x07X\x02\x00\x00\x00f8q\x08K\x00K\x01\x87q\tRq\n(K\x03X\x01\x00\x00\x00<q\x0bNNNJ\xff\xff\xff\xffJ\xff\xff\xff\xffK\x00tq\x0cb\x89C\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0?\x00\x00\x00\x00\x00\x00\xf0?\x00\x00\x00\x00\x00\x00\xf0?\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00@\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00q\rtq\x0eb.'
解决方案
推荐阅读
- git - 使用 Git 命名空间来托管多个存储库
- python - python GC - 引用计数仅在 gc.collect() 时有效?
- java - Cordova 和 JDK 相互矛盾:JDK 1.8 或更高版本的要求检查失败
- jhipster - JHipster 与 JWT 和 OAuth2
- c++ - 尝试使用 c++ 中的 service() 方法调用 systemctl 调用时出错
- java - “UCanAccess:用户缺少权限或找不到对象”第二个连接
- javascript - 在 HTML5 游戏中实现计时器
- c++ - 跨线程共享读取资源
- html - 如何防止列式 DIV 换行?
- swift - Swift 4 UIView.Animate 不触发并忽略动画