当前位置: 首页 > 面试题库 >

numpy bincount可以与2D数组一起使用吗?

籍光熙
2023-03-14
问题内容

我看到numpy
bincount的行为我无法理解。我想按行方式将值归并到2D数组中,然后查看下面的行为。为什么它可以与dbArray一起使用,但不能与simarray一起使用?

>>> dbArray
array([[1, 0, 1, 0, 1],
       [1, 1, 1, 1, 1],
       [1, 1, 0, 1, 1],
       [1, 0, 0, 0, 0],
       [0, 0, 0, 1, 1],
       [0, 1, 0, 1, 0]])
>>> N.apply_along_axis(N.bincount,1,dbArray)
array([[2, 3],
       [0, 5],
       [1, 4],
       [4, 1],
       [3, 2],
       [3, 2]], dtype=int64)
>>> simarray
array([[2, 0, 2, 0, 2],
       [2, 1, 2, 1, 2],
       [2, 1, 1, 1, 2],
       [2, 0, 1, 0, 1],
       [1, 0, 1, 1, 2],
       [1, 1, 1, 1, 1]])
>>> N.apply_along_axis(N.bincount,1,simarray)

Traceback (most recent call last):
  File "<pyshell#31>", line 1, in <module>
    N.apply_along_axis(N.bincount,1,simarray)
  File "C:\Python27\lib\site-packages\numpy\lib\shape_base.py", line 118, in apply_along_axis
    outarr[tuple(i.tolist())] = res
ValueError: could not broadcast input array from shape (2) into shape (3)

问题答案:

问题在于,bincount并非总是返回相同形状的对象,尤其是在缺少值时。例如:

>>> m = np.array([[0,0,1],[1,1,0],[1,1,1]])
>>> np.apply_along_axis(np.bincount, 1, m)
array([[2, 1],
       [1, 2],
       [0, 3]])
>>> [np.bincount(m[i]) for i in range(m.shape[1])]
[array([2, 1]), array([1, 2]), array([0, 3])]

可以,但是:

>>> m = np.array([[0,0,0],[1,1,0],[1,1,0]])
>>> m
array([[0, 0, 0],
       [1, 1, 0],
       [1, 1, 0]])
>>> [np.bincount(m[i]) for i in range(m.shape[1])]
[array([3]), array([1, 2]), array([1, 2])]
>>> np.apply_along_axis(np.bincount, 1, m)
Traceback (most recent call last):
  File "<ipython-input-49-72e06e26a718>", line 1, in <module>
    np.apply_along_axis(np.bincount, 1, m)
  File "/usr/local/lib/python2.7/dist-packages/numpy/lib/shape_base.py", line 117, in apply_along_axis
    outarr[tuple(i.tolist())] = res
ValueError: could not broadcast input array from shape (2) into shape (1)

惯于。

您可以使用minlength参数,并使用lambdapartial或其他方式传递该参数:

>>> np.apply_along_axis(lambda x: np.bincount(x, minlength=2), axis=1, arr=m)
array([[3, 0],
       [1, 2],
       [1, 2]])


 类似资料:
  • 问题内容: 我想在我的node.js脚本中使用phantomjs。有一个phantomjs- node 库。.但是不幸的是,作者使用了这个奇怪的coffee脚本代码来解释他在做什么: 现在,如果我直接将phantomjs与javascript一起使用,它将看起来像这样: 所以基本上我想用普通的javascript编写上面代码的第一段代码(通过阅读coffee脚本文档 ..这就是我所做的: 不幸的是

  • 问题内容: 是否可以使用Node.js在服务器端使用jQuery选择器/ DOM操作? 问题答案: 似乎有一个重大更新,导致原来的答案不再起作用。我找到了这个答案,解释了现在如何使用。我已经在下面复制了相关代码。 注意:原始答案没有提及你还需要使用安装

  • 我需要一些目前在JavaFX中找不到的功能。比如机器人或托盘图标。 我知道这些工具确实适用于JavaFx应用程序。但是可以使用它们吗?有什么需要我考虑的吗?

  • 在我的Eclipse RCP视图中,我使用JFace数据绑定将模型数据绑定到。我使用绑定数据,如代码片段所示,它工作得很好。 现在我真的想在节点上显示一个图像和文本。如果没有数据绑定,我只需要重写的方法,但是content+label provider方法和不能协同工作。我还没有在API中找到问题的解决方案。是否有一个解决方案,也许使用s?

  • 问题内容: 我查看了Google Cloud SQL的文档和各种搜索,但无法确定是否可以将SQLAlchemy与Google Cloud SQL一起使用,如果可以,则连接URI应该是什么。 我正在寻找使用Flask-SQLAlchemy扩展,并且需要这样的连接字符串: 我看到了Django示例,但看起来配置使用的样式与连接字符串不同。 https://developers.google.com/c

  • 假设没有访问MongoDB服务器,使用Meteor开发没有多大意义,我是否正确? Meteor是一个构建、打包和部署应用程序和网站的优秀框架。从开发角度来看,模板和响应性数据库工作使原型制作比大多数MVC容易得多。 我知道在幕后,WebSocket和DDP提供了实时同步的魔力,这意味着你需要访问MongoDB服务器,这是你在GoogleAppEngine、Parse或Kinvey等PaaS解决方案