python库 Pip 安装python包的 推荐 工具 Numpy 为python提供快速的多维数组处理能力 Scipy 在Numpy基础上 添加 了众多科学计算工具包 Matplotlib python丰富的绘图库 数据生成示例 import numpy as np a
python库
Pip
安装python包的推荐工具
Numpy
为python提供快速的多维数组处理能力
Scipy
在Numpy基础上添加了众多科学计算工具包
Matplotlib
python丰富的绘图库
数据生成示例
import numpy as npa=np.arange(0,60,10).reshape((-1,1))+np.arange(6)
print(a)[[ 0 1 2 3 4 5]
[10 11 12 13 14 15]
[20 21 22 23 24 25]
[30 31 32 33 34 35]
[40 41 42 43 44 45]
[50 51 52 53 54 55]]
代码解释
arange(0,60,10)arange给定一个从0开始到60结束以10作为间距的范围
[0,10,20,30,40,50]reshape((-1,1)自动匹配行数之后转置为列
[[0,][10,]
[20,]
[30,]
[40,]
[50]]arange(6)
没有给起点值,默认为0
[0,1,2,3,4,5]相加之后
[[ 0 1 2 3 4 5][10 11 12 13 14 15]
[20 21 22 23 24 25]
[30 31 32 33 34 35]
[40 41 42 43 44 45]
[50 51 52 53 54 55]]
代码演示
1.使用array创建
通过array函数传递list对象
L = [1, 2, 3, 4, 5, 6]print("L = ", L)
a = np.array(L)
print("a = ", a)
print(type(a))
L是一个列表类型,如果直接打印L的话会显示一个列表,通过np.array函数可以将L列表转换为ndarray形式的行向量。
L = [1, 2, 3, 4, 5, 6]a = [1 2 3 4 5 6]
<class 'numpy.ndarray'>
若传递的是多层嵌套的list,将创建多维数组
b = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]])print(b)
如果将多个列表传入np.array函数,将被转换为二维的矩阵。
[[ 1 2 3 4][ 5 6 7 8]
[ 9 10 11 12]]
数组大小可以通过其shape属性获得
print (a.shape)print (b.shape)
shape可以返回一个矩阵的大小。
(6,)(3, 4)
也可以强制修改shape
b.shape = 4, 3print(b)
通过直接对shape赋值可以修改矩阵的大小。
[[ 1 2 3][ 4 5 6]
[ 7 8 9]
[10 11 12]]
注:从(3,4)改为(4,3)并不是对数组进行转置,而只是改变每个轴的大小,数组元素在内存中的位置并没有改变。
b.shape = 2, -1print (b)
print (b.shape)
当某个轴为-1时,将根据数组元素的个数自动计算此轴的长度。
[[ 1 2 3 4 5 6][ 7 8 9 10 11 12]]
(2, 6)
reshape方法
c = b.reshape((4, -1))print ("b = \n", b)
print ('c = \n', c)
reshape可以创建改变了尺寸的新数组,原数组的shape保持不变。
b =[[ 1 2 3 4]
[ 5 6 7 8]
[ 9 10 11 12]]
c =
[[ 1 2 3]
[ 4 5 6]
[ 7 8 9]
[10 11 12]]b[0][1] = 20
print ("b = \n", b)
print ("c = \n", c)
数组b和c共享内存,修改任意一个将影响另外一个。
b =[[ 1 20 3 4]
[ 5 6 7 8]
[ 9 10 11 12]]
c =
[[ 1 20 3]
[ 4 5 6]
[ 7 8 9]
[10 11 12]]
数组的元素类型可以通过dtype属性获得
print (a.dtype)print (b.dtype)int32
int32
可以通过dtype参数在创建时指定元素类型
d = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]], dtype=np.float)f = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]], dtype=np.complex)
print (d)
print (f)
分别设置为浮点型和复数型。
[[ 1. 2. 3. 4.][ 5. 6. 7. 8.]
[ 9. 10. 11. 12.]]
[[ 1.+0.j 2.+0.j 3.+0.j 4.+0.j]
[ 5.+0.j 6.+0.j 7.+0.j 8.+0.j]
[ 9.+0.j 10.+0.j 11.+0.j 12.+0.j]]
如果更改元素类型,可以使用astype安全的转换
f = d.astype(np.int)print (f)[[ 1 2 3 4]
[ 5 6 7 8]
[ 9 10 11 12]]
但不要强制仅修改元素类型
d.dtype = np.intprint (d)
将会以int来解释单精度float类型。
[[ 0 1072693248 0 1073741824 0 1074266112 0 1074790400][ 0 1075052544 0 1075314688 0 1075576832 0 1075838976]
[ 0 1075970048 0 1076101120 0 1076232192 0 1076363264]]