Numpy基础详细讲义(ndarray)
参考资料: MoModel python进阶
1. ndarray
###ndarray的创建和属性调用
ndarray是Numpy里很好用的数组工具。它可以通过以下方式创建:
import numpy as np
# 创建不同形状的数组
a = np.array([[1, 2, 3],[4, 5, 6]])
b = np.array([1, 2, 3, 4])
c = np.array([[[1, 2, 3],[4, 5, 6]],[[1, 2, 3],[4, 5, 6.0]]])
# 分别打印出形状
print(a.shape)
print(b.shape)
print(c.shape)
输出结果为
(2, 3)
(4,)
(2, 2, 3)
怎么理解这个结果呢?我的理解是:第n个数字表示第n级括号里有多少对(n+1)级的括号或元素。比如数组a,一级中括号下有两对中括号,二级中括号下有三个元素。所以输出为(2,3) 至于命名为shape,三维一下比较好理解,对一维数组而言是长度,对二维数组而言是长和宽,对三维数组而言是长宽高。
除了shape之外,ndarray数组还支持好多有用的属性:
- ndim : 表示维数,向量组的秩(rank)
- size : 整个ndarray中元素的数量
- dtype :数组元素的类型 (上例数组 c 对应于 float 64) 写c.dtype就可以
ndarray基本操作
生成全为0 或 1 的数组
import numpy as np
zero = np.zeros([3, 4]) #生成 1 就用 np.ones([, ])
zero
还有eye可以生成“标准型”数组。
通过以上函数得到的数组都是float64类型
类型修改
a = ([2,2],[2,2])
a.astype(np.float32)
形状修改(很有用)
reshape(行数,列数)
from numpy import array
a = np.array([0,1,2,3,4,5,6,7,8])
a=a.reshape(3,3)
a
数组去重
np.unique(arr)
转化为矩阵(之后使用乘法会遵循矩阵乘法规则)
A = np.mat(a)
mat函数直接对普通的非ndarray也可以生效
2. IO操作
写出文件
使用savetext 可以把数组写进文件
np.savetxt('out.txt', data)
读入文件
- 逐行读取
with open('out.txt') as f:
for line in f:
print(line)
- 读入数组,存为ndarray类型
# 读取文件
np.loadtxt('out.txt')
3.自动生成等间隔的数组
import numpy as np
from numpy import array
a = np.arange(1,10,2)
b = np.linspace(1,10,10)
print(a)
print(b)
[1 3 5 7 9]
[ 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.]
arange 不是arrange,令a,b,c分别为三个参数,生成数组范围是[a,b) ,c为step
linspace源自matlab,从a到b隔成c个
arange是一个人用步长量球场,给了起点终点步长,每一步脚印的坐标是数组元素,注意不能踩到终点
linspace是pdd要砍几刀()
4.切片索引
x = np.arange(1, 13).reshape(3, 4)
print(x[2, :])
print(x[:, 1])
分别是取下标为2的行,和下标为1的列
本文含有隐藏内容,请 开通VIP 后查看