python - 这个数组中有多少列/行?
问题描述
我知道这可能是一个愚蠢的问题(请告诉我)。当我打印出一个形状为 (2, 493, 452) 的数组时,应该有 2 行吧?为什么它看起来像下面的多行(例如第一行是 [0 0 0...0 0 0])然后对于第二个输出(2, 222836),这意味着有 2 行和 222836 列?
(2, 493, 452)
[[[ 0 0 0 ... 0 0 0]
[ 1 1 1 ... 1 1 1]
[ 2 2 2 ... 2 2 2]
...
[490 490 490 ... 490 490 490]
[491 491 491 ... 491 491 491]
[492 492 492 ... 492 492 492]]
[[ 0 1 2 ... 449 450 451]
[ 0 1 2 ... 449 450 451]
[ 0 1 2 ... 449 450 451]
...
[ 0 1 2 ... 449 450 451]
[ 0 1 2 ... 449 450 451]
[ 0 1 2 ... 449 450 451]]]
(2, 222836)
[[ 0 0 0 ... 492 492 492]
[ 0 1 2 ... 449 450 451]]
这是我的代码:
original_image=cv2.imread("mickey mouse.jpg")
img=cv2.cvtColor(original_image,cv2.COLOR_BGR2RGB)
vectorized=img.reshape((-1,3))
#print(vectorized.shape)
#print(vectorized)
ind=np.indices((m,n))
print(ind.shape)
print(ind)
ind.resize((2,m*n))
print(ind.shape)
print(ind)
解决方案
indices
为 2 个维度中的每一个创建“索引”:
ind=np.indices((m,n))
print(ind.shape)
print(ind)
所以结果是一个 (2,m,n) 数组。 ind[9,:,:]
是第一维的索引,一个 (m,n) 数组。
实际上这应该是reshape
,但它从原始的 . (2, m*n) 形状数组ind
。
ind.resize((2,m*n))
print(ind.shape)
print(ind)
在谈论这些索引数组时,行/列没有多大意义。
看一个较小的案例(来自另一个最近的 SO,如何获取 NumPy 数组的所有索引,但不是 np.indices() 提供的格式)
In [71]: list(np.ndindex(3,2))
Out[71]: [(0, 0), (0, 1), (1, 0), (1, 1), (2, 0), (2, 1)]
In [72]: np.indices((3,2))
Out[72]:
array([[[0, 0],
[1, 1],
[2, 2]],
[[0, 1],
[0, 1],
[0, 1]]])
meshgrid
做同样的事情,但作为 2 个数组的列表:
In [75]: np.meshgrid(np.arange(3),np.arange(2),indexing='ij')
Out[75]:
[array([[0, 0],
[1, 1],
[2, 2]]),
array([[0, 1],
[0, 1],
[0, 1]])]
推荐阅读
- linux - 如何将标准输出写入 git bash 上的任何文件?
- c# - 实现登录视图
- kubernetes - 是否可以在 GKE 集群上创建 Ingress 资源并强制它使用现有的 HTTP(S) 负载平衡器?
- html - 如何在CSS上的各种项目中修复按钮内文本的位置
- php - 具有计算和舍入的 MassUpdate
- google-chrome - 无法安装站点:页面没有清单URL
- sql - 查询以下内容的最佳或最简单方法是什么
- wordpress - 加载简码 Wordpress 直到页面加载完成
- html - SVG(?)导致空白
- python - 在弧形补丁之间填充 - Matplotlib