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

詹姆士

我看到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]])

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将numpy数组与scipy odeint一起使用

来自分类Dev

更新2D numpy数组值

来自分类Dev

numpy:使用2D索引数组进行2D数组访问

来自分类Dev

无法使用numpy中可用的函数将2d数组修补为subarry数组吗?

来自分类Dev

使用索引替换2D numpy数组的一部分

来自分类Dev

如何使用Numpy重复此2d对数组?

来自分类Dev

合并numpy数组在一起

来自分类Dev

Python 2D NumPy数组理解

来自分类Dev

numpy argsort返回2d索引数组吗?

来自分类Dev

将NumPy与JyNI一起使用

来自分类Dev

NumPy的flatten()是否可以返回2D数组?

来自分类Dev

遮罩2D Numpy数组

来自分类Dev

Numpy 2D数组到表格

来自分类Dev

使用numpy.save保存Numpy 2D数组的列表(数组在一起是锯齿状的)

来自分类Dev

使用附加函数创建2D numpy数组

来自分类Dev

大型2D numpy数组相乘

来自分类Dev

2D ID数组和1D权重的加权numpy bincount

来自分类Dev

在2D numpy数组的末尾添加一列

来自分类Dev

可以重建2d矩阵,其中已将遮罩与numpy一起使用,并且已展平

来自分类Dev

如何使用numpy计算2d数组的“最大遮罩”

来自分类Dev

合并numpy数组在一起

来自分类Dev

将NumPy与JyNI一起使用

来自分类Dev

过采样的Numpy数组(2D)

来自分类Dev

使用Pandas,Matplotlib和Numpy绘制2D数组

来自分类Dev

一维外推2d numpy数组

来自分类Dev

将 numpy 与 Cython 一起使用

来自分类Dev

numpy 数组上的 2D argmax

来自分类Dev

使用 numpy 避免在 2D 数组上循环

来自分类Dev

如何获得向量。从使用 argmax 的 2D numpy 数组?