numpy
-
reshape函数:
顾名思义,将原有的数组重新整形,变成参数中指定的形状。
import numpy as np
a = np.arange(1, 20, 2)
print a.reshape(2, 5)
print a.reshape(2, 1, 5)
[[ 1 3 5 7 9]
[11 13 15 17 19]]
[[[ 1 3 5 7 9]]
[[11 13 15 17 19]]]
如下代码所示,在reshape成三维数组时,第一个参数m控制将所有数据划分为m部分,第二个参数n控制将每一块数据分别划分为n部分,最后一个参数x,表示每一个小块有x列。
import numpy as np
a = np.arange(1, 21)
print a.reshape(2, 2, 5)
numpy.logspace用法
现在介绍logspac用于创建等比数列。其实用法差不多,但是有一个特殊的地方需要注意。
● 先来看一个例子,我们让开始点为0,结束点为0,元素个数为10,看看输出结果。为什么是这样子?难道不都是0吗?
>>> a = np.logspace(0,0,10)
>>> a
array([ 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.])
- 1
- 2
- 3
● 因为logspace中,开始点和结束点是10的幂,0代表10的0次方,9代表10的9次方。我们看下面的例子。
>>> a = np.logspace(0,9,10)
>>> a
array([ 1.00000000e+00, 1.00000000e+01, 1.00000000e+02,
1.00000000e+03, 1.00000000e+04, 1.00000000e+05,
1.00000000e+06, 1.00000000e+07, 1.00000000e+08,
1.00000000e+09])
- 1
- 2
- 3
- 4
- 5
- 6
>>> a = np.logspace(0,9,10)
>>> a
array([ 1.00000000e+00, 1.00000000e+01, 1.00000000e+02,
1.00000000e+03, 1.00000000e+04, 1.00000000e+05,
1.00000000e+06, 1.00000000e+07, 1.00000000e+08,
1.00000000e+09])
- 1
- 2
- 3
- 4
- 5
- 6
● 假如,我们想要改变基数,不让它以10为底数,我们可以改变base参数,将其设置为2试试。
>>> a = np.logspace(0,9,10,base=2)
>>> a
array([ 1., 2., 4., 8., 16., 32., 64., 128., 256., 512.])
[[[ 1 2 3 4 5]
[ 6 7 8 9 10]]
[[11 12 13 14 15]
[16 17 18 19 20]]]
tip:在终端输出数据时,有时数据会很长,NumPy会自动将数据的中间部分变成省略号显示。如下:
[[ 0 1 2 ..., 97 98 99]
[ 100 101 102 ..., 197 198 199]
[ 200 201 202 ..., 297 298 299]
...,
[9700 9701 9702 ..., 9797 9798 9799]
[9800 9801 9802 ..., 9897 9898 9899]
[9900 9901 9902 ..., 9997 9998 9999]]
为了显示出全部数据,可以添加如下代码:
np.set_printoptions(threshold='nan')
-
dot函数:
数组间存在简单的加减乘法,对于乘法,我们都知道矩阵的乘法并不是普通的对应相乘,而使用*符号产生的是对应位置相乘的结果。如果想得到矩阵相乘的结果,需要使用dot函数,如下代码所示:
import numpy as np
a = np.array([[1, 2], [2, 3]])
b = np.array([[2, 2], [3, 3]])
print a * b
[[2 4]
[6 9]]
print np.dot(a, b)
[[ 8 8]
[13 13]]
-
flat:
在遍历一维数组时,直接使用下边索引可以一次性遍历,然而当维数增加,遍历下标其实遍历的是某一维度上的数组。例如三维数组,无法直接遍历到每一个元素。如果想直接遍历到每一个元素,可以使用flat(可以理解为要使用到数组中每一个“公寓(flat)中的元素”),如下所示:
import numpy as np
b = np.array([[[2, 2], [3, 3]], [[2, 2], [3, 3]]])
for _ in b:
print _
[[2 2]
[3 3]]
[[2 2]
[3 3]]
for _ in b.flat:
print _
2
2
3
3
2
2
3
3
作者:加勒比海鲜王
链接:https://www.jianshu.com/p/949b1f8750a9
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

浙公网安备 33010602011771号