接下来我要说 tf.argmax()函数的事情,所以这里先简单铺垫以下数组索引的事情。

python数组中用 “[]” 来区分维度,举个例子。

对于只有行和列两个维度的数组来讲,定义的方式如:(4*3数组)

import numpy as np
test=np.array([[1,2,3],[2,3,4],[5,4,3],[8,7,2]])
print(test)

这样第一个 [1,2,3] 表示第一维即第一行的数据,下一个[2,3,4]表示第二行的数据,以此类推。同时要注意,python使用 [] 来区分数组的维度,表示多维数组时,同一维度的要用 [] 括起来。比如一张灰度图像是二维数组,它在print之后有行和列两个维度,python先展示行,再展示列,每一行都用 [] 括起来,之间用“,”分隔,最后所有的行也要用 [] 括起来表示是二维数组。所以在定义和展示的时候,二维数组都有两个[]。

python数组取值 python数组选取_数组


技巧是看最前面有几个 " [ " 就是几维数组。

但是要注意,python中数组的索引都是从0开始的!也就是存在第0行和第0列,同时[A:B]也都是表示从A到B截止,不包含B。

test[0] = array([1, 2, 3])      #第0行
test[1] = array([2, 3, 4])      #第1行
test[2] = array([5, 4, 3])      #第2行
test[3] = array([8, 7, 2])      #第3行

import numpy as np
test=np.array([[1,2,3],[2,3,4],[5,4,3],[8,7,2]])
print(test[0])   
print(test[1])   
print(test[2])   
print(test[3])

输出:


python数组取值 python数组选取_python数组取值_02


test[:,0] = array([1, 2, 3])      #第0列
test[:,1] = array([2, 3, 4])      #第1列
test[:,2] = array([5, 4, 3])      #第2列
test[:,3] = array([8, 7, 2])      #第3列

import numpy as np
test=np.array([[1,2,3],[2,3,4],[5,4,3],[8,7,2]])
print(test[:,0])   
print(test[:,1])   
print(test[:,2])   
print(test[:,3])

输出:


python数组取值 python数组选取_数据_03


可以看出来,python的显示可能没有matlab那么直观,他不会行展示成横的,列展示成竖的,它只会用 [] 去分割每一维,这里要注意,尤其是常用matlab的人,很容易搞混,比如我

然而对于三维数组,前面有写过一篇文章,对于RGB三维数组,输出为:

python数组取值 python数组选取_数据_04


第一个 [ ] 其实是第一行第一列的元素的三个RGB值,第二个 [] 是第一行第二列元素的三个RGB值,然后说完一行,再说下一行直到到最后一个。

下面贴一个参考文献中,关于python中数组和列表读取一列的方法:

文献 [1] :

在python中,普通的列表list和numpy中的数组array是不一样的,最大的不同是:一个列表中可以存放不同类型的数据,包括int、float和str,甚至布尔型;而一个数组中存放的数据类型必须全部相同,int或float。

在list中的数据类型保存的是数据的存放的地址,简单的说就是指针,并非数据,这样保存一个list就太麻烦了,例如list1=[1,2,3,4]需要4个指针和四个数据,增加了存储和消耗cpu,而array1=numpy.array([1,2,3,4])只需要存放四个数据,读取和计算更加方便,因此在做纯数字操作时,建议使用array。

也正因为列表可以存放不同类型的数据,因此列表中每个元素的大小可以相同,也可以不同,也就不支持一次性读取一列,即使是对于标准的二维数字列表:

>>> a=[[1,2,3],[4,5,6]]
>>> a[0]    #取一行
[1, 2, 3]
>>> a[:,0]  #尝试用数组的方法读取一列失败
TypeError: list indices must be integers or slices, not tuple

我们需要用列表解析的方法读取一列:

>>> b=[x[0] for x in a]
>>> print(b)
[1, 4]

而对于数组,可以直接读取:

>>> import numpy as np
>>> a=np.array([[1,2,3],[4,5,6]])
>>> a[:,0]
array([1, 4])

当然列表在处理混合数据时也有着独特的优势。