numpy 如何从np.array()中只取数组矩阵(item)

s3fp2yjn  于 2023-02-04  发布在  其他
关注(0)|答案(1)|浏览(150)

我有一个numpy数组的列表mask_arr,列表的元素是numpy数组,如下所示:

mask_arr[0][:]
array([[255, 255, 255, ..., 255, 255, 255],
       [255, 255, 255, ..., 255, 255, 255],
       [255, 255, 255, ..., 255, 255, 255],
       ...,
       [255, 255, 255, ..., 255, 255, 255],
       [255, 255, 255, ..., 255, 255, 255],
       [255, 255, 255, ..., 255, 255, 255]], dtype=uint8)

如何仅使用2D阵列而不使用dtype部分:

[[255, 255, 255, ..., 255, 255, 255],
 [255, 255, 255, ..., 255, 255, 255],
 [255, 255, 255, ..., 255, 255, 255],
 ...,
 [255, 255, 255, ..., 255, 255, 255],
 [255, 255, 255, ..., 255, 255, 255],
 [255, 255, 255, ..., 255, 255, 255]]

原因是我收到以下错误:

im = mask_arr[i]
*** TypeError: only integer scalar arrays can be converted to a scalar index
m528fe3b

m528fe3b1#

创建数组列表:

In [19]: alist = [np.ones((3,4),'uint8'),np.zeros((2,2),'int16')]

列表默认显示:

In [20]: alist
Out[20]: 
[array([[1, 1, 1, 1],
        [1, 1, 1, 1],
        [1, 1, 1, 1]], dtype=uint8),
 array([[0, 0],
        [0, 0]], dtype=int16)]

使用str方法显示列表的元素:

In [21]: for a in alist: print(str(a))
[[1 1 1 1]
 [1 1 1 1]
 [1 1 1 1]]
[[0 0]
 [0 0]]

数组、dtype和逗号省略,这只是一种显示方式;实际阵列中没有变化。
将其与转换为列表的数组的显示进行比较-注意逗号。

In [22]: for a in alist: print(a.tolist())
[[1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1]]
[[0, 0], [0, 0]]

在python中,每个类都定义了__str____repr__方法,这些方法决定了它们的显示方式,显示方式给出了对象类的概念,但是不同的显示方式并不会改变类。
同样,每个类都有自己的索引规则。

相关问题