调试过程中遇到的一些问题,后面应该构成系列认知,现在先简单记录.
a = np.zeros(5)
>>> print a
[0. 0. 0. 0. 0.]
>>> b = np.zeros((1,5))
>>> print b
[[0. 0. 0. 0. 0.]]
两个打印出来是不一致的,第二种方式比第一种多了一个维度.访问方式也不一样.
print a[1]
0.0
>>> print b[1]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: index 1 is out of bounds for axis 0 with size 1
>>> print b[0,1]
0.0
数组拼接.
np.vstack():在竖直方向上堆叠
np.hstack():在水平方向上平铺
arr1=np.array([1,2,3])
arr2=np.array([4,5,6])
>>> arr5 = np.array([arr1,arr2])
>>> print arr5
[[1 2 3]
[4 5 6]]
>>> arr3 = np.vstack((arr1,arr2))
>>> print arr3
[[1 2 3]
[4 5 6]]
arr6 = np.hstack((arr1,arr2))
>>> print arr6
[1 2 3 4 5 6]
应用,在DQN中就用到了这个函数,把数组和数组组一起变成了一列:
print ('(s, [a, r], s_)',(s, [a, r], s_))
>>>('(s, [a, r], s_)', (array([ 6.4531216 , 3.83963363, 53.08472093]), [4, 0], array([ 6.4531216 , 3.83963363, 52.56202333])))
print ('(s, [a, r], s_)',np.hstack((s, [a, r], s_)))
>>> array([ 6.4531216 , 3.83963363, 52.56202333, 6. , 0. ,
6.6531216 , 3.83963363, 52.01932574])) #变成了一个数组
返回数组中最大值和最大值的位置(索引).
- min/max是python内置的函数,返回最大值.
-
np.argmin/np.argmax是numpy库中的成员函数,返回索引
-
参数axis=0,按列找,axis=1,按行找.
-
如果是list的化则要用其他函数.
print a
[[1. 0. 0. 0. 0.]
[0. 1. 0. 5. 0.]
[0. 0. 1. 0. 0.]
[0. 0. 0. 1. 0.]
[0. 0. 0. 0. 1.]]
>>> b=np.max(a)
>>> print b
5.0
>>> b=np.argmax(a)
>>> print b
8
>>> c=np.max(a,axis=0)
>>> print c
[1. 1. 1. 5. 1.]
>>> c=np.max(a,axis=1)
>>> print c
[1. 5. 1. 1. 1.]
>>> d=np.argmax(a,axis=0)
>>> print d
[0 1 2 1 4]
>>> d=np.argmax(a,axis=1)
>>> print d
[0 3 2 3 4]
寻找list中最大值和其索引,因为其只有一维,所以没有其他参数.
>>> list = [9, 12, 88, 14, 25]
>>> max_list = max(list)
>>> print max_list
88
>>> max_index =list.index(max(list))
>>> print max_index
2