import numpy
#取(-1,1)随机数,shape为(3,4),向下取整
a = numpy.floor(10 * numpy.random.random((3,4)))
print(a)
print("--------->")
print(a.ravel())
print("--------->")
a.shape = (6,2)
print(a)
print("--------->")
print(a.T)
[[4. 2. 6. 5.]
[1. 2. 9. 3.]
[9. 1. 7. 3.]]
--------->
[4. 2. 6. 5. 1. 2. 9. 3. 9. 1. 7. 3.]
--------->
[[4. 2.]
[6. 5.]
[1. 2.]
[9. 3.]
[9. 1.]
[7. 3.]]
--------->
[[4. 6. 1. 9. 9. 7.]
[2. 5. 2. 3. 1. 3.]]
总结:
a.ravel()表示数据拉成向量,返回一个view
a.T表示翻转矩阵的shape,行变成列,列变成行
--------
获取每一列的最大值
a=numpy.random.random((2,3)) #构造一个随机数组,shape为(2,3)
ind1 = a.argmax(axis=0) #按列获取最大值(0轴匹配index;1轴匹配columns),返回下标
a_max = a[ind1, range(a.shape[1])] #按下标获取对应值
print(a)
print('----')
print(ind1)
print('----')
print(a_max)
[[0.93070656 0.4293619 0.04911915]
[0.61250636 0.04286186 0.93766624]]
----
[0 0 1]
----
[0.93070656 0.4293619 0.93766624]
遗留问题:
1、a[ind1, range(a,shape[1])] 的运作机制?与a[ind1]有何区别?