没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
NumPy 的详细教程(官网手册翻译)
基础篇
NumPy 的主要对象是同种元素的多维数组。这是一个所有的元素都是一种类型、通过一个正
整数元组索引的元素表格(通常是元素是数字)。在 NumPy 中维度(dimensions)叫做轴
(axes),轴的个数叫做秩(rank)。
例如,在 3D 空间一个点的坐标 [1,2,3] 是一个秩为 1 的数组,因为它只有一个轴。那个
轴长度为 3.又例如,在以下例子中,数组的秩为 2(它有两个维度).第一个维度长度为 2,第二个
维度长度为 3.
1. [[1.,0.,0.],
2. [0.,1.,2.]]
NumPy 的数组类被称作 ndarray。通常被称作数组。注意 numpy.array 和标准 Python 库类
array.array 并不相同,后者只处理一维数组和提供少量功能。更多重要 ndarray 对象属性有:
ndarray.ndim
数组轴的个数,在 python 的世界中,轴的个数被称作秩
ndarray.shape
数组的维度。这是一个指示数组在每个维度上大小的整数元组。例如一个 n 排 m 列的矩
阵,它的 shape 属性将是(2,3),这个元组的长度显然是秩,即维度或者 ndim 属性
ndarray.size
数组元素的总个数,等于 shape 属性中元组元素的乘积。
ndarray.dtype
一个用来描述数组中元素类型的对象,可以通过创造或指定 dtype 使用标准 Python 类
型。另外 NumPy 提供它自己的数据类型。
ndarray.itemsize
数组中每个元素的字节大小。例如,一个元素类型为 float64 的数组 itemsiz 属性值为
8(=64/8),又如,一个元素类型为 complex32 的数组 item 属性为 4(=32/8).
ndarray.data
包含实际数组元素的缓冲区,通常我们不需要使用这个属性,因为我们总是通过索引来
使用数组中的元素。
一个例子
1
1. >>>fromnumpyimport*
2. >>>a=arange(15).reshape(3,5)
3. >>>a
4. array([[0,1,2,3,4],
5. [5,6,7,8,9],
6. [10,11,12,13,14]])
7. >>>a.shape
8. (3,5)
9. >>>a.ndim
10. 2
11. >>>a.dtype.name
12. 'int32'
13. >>>a.itemsize
14. 4
15. >>>a.size
16. 15
17. >>>type(a)
18. numpy.ndarray
19. >>>b=array([6,7,8])
20. >>>b
21. array([6,7,8])
22. >>>type(b)
23. numpy.ndarray
创建数组
有好几种创建数组的方法。
例如,你可以使用 array 函数从常规的 Python 列表和元组创造数组。所创建的数组类型由
原序列中的元素类型推导而来。
1. >>>fromnumpyimport*
2. >>>a=array([2,3,4])
3. >>>a
4. array([2,3,4])
5. >>>a.dtype
6. dtype('int32')
7. >>>b=array([1.2,3.5,5.1])
8. >>>b.dtype
9. dtype('float64')一个常见的错误包括用多个数值参数调用`arr
ay`而不是提供一个由数值组成的列表作为一个参数。
10.
11. >>>a=array(1,2,3,4)#WRONG
12.
13. >>>a=array([1,2,3,4])#RIGHT
数组将序列包含序列转化成二维的数组,序列包含序列包含序列转化成三维数组等等。
1. >>>b=array([(1.5,2,3),(4,5,6)])
2. >>>b
3. array([[1.5,2.,3.],
4. [4.,5.,6.]])
数组类型可以在创建时显示指定
1. >>>c=array([[1,2],[3,4]],dtype=complex)
2. >>>c
3. array([[1.+0.j,2.+0.j],
4. [3.+0.j,4.+0.j]])
通常,数组的元素开始都是未知的,但是它的大小已知。因此,NumPy 提供了一些使用占位
符创建数组的函数。这最小化了扩展数组的需要和高昂的运算代价。
函数 function 创建一个全是 0 的数组,函数 ones 创建一个全 1 的数组,函数 empty
创建一个内容随机并且依赖与内存状态的数组。默认创建的数组类型(dtype)都是 float64。
1. >>>zeros((3,4))
2. array([[0.,0.,0.,0.],
3. [0.,0.,0.,0.],
4. [0.,0.,0.,0.]])
5. >>>ones((2,3,4),dtype=int16)#dtypec
analsobespecified
6. array([[[1,1,1,1],
7. [1,1,1,1],
8. [1,1,1,1]],
9. [[1,1,1,1],
10. [1,1,1,1],
11. [1,1,1,1]]],dtype=int16)
12. >>>empty((2,3))
13. array([[3.73603959e‐262,6.02658058e‐154,
6.55490914e‐260],
14. [5.30498948e‐313,3.14673309e‐307,1.
00000000e+000]])
为了创建一个数列,NumPy 提供一个类似 arange 的函数返回数组而不是列表:
1. >>>arange(10,30,5)
2. array([10,15,20,25])
3. >>>arange(0,2,0.3)#itacceptsfloa
targuments
4. array([0.,0.3,0.6,0.9,1.2,1.5,1.8])
当 arange 使用浮点数参数时,由于有限的浮点数精度,通常无法预测获得的元素个数。因
此,最好使用函数 linspace 去接收我们想要的元素个数来代替用 range 来指定步长。
其它函数 array, zeros, zeros_like, ones, ones_like, empty, empty_like, arange, linspace,
rand, randn, fromfunction, fromfile 参考:
NumPy 示例
打印数组
当你打印一个数组,NumPy 以类似嵌套列表的形式显示它,但是呈以下布局:
最后的轴从左到右打印
次后的轴从顶向下打印
剩下的轴从顶向下打印,每个切片通过一个空行与下一个隔开
一维数组被打印成行,二维数组成矩阵,三维数组成矩阵列表。
1. >>>a=arange(6)#1darray
2. >>>printa
3. [012345]
4. >>>
5. >>>b=arange(12).reshape(4,3)#2darray
6. >>>printb
7. [[012]
8. [345]
9. [678]
10. [91011]]
11. >>>
12. >>>c=arange(24).reshape(2,3,4)#3darr
ay
13. >>>printc
14. [[[0123]
15. [4567]
16. [891011]]
17.
18. [[12131415]
19. [16171819]
20. [20212223]]]
查看形状操作一节获得有关 reshape 的更多细节
剩余34页未读,继续阅读
资源评论
- qiyudong2020-07-17文件页数不多,但是很经典。
Error__hxy
- 粉丝: 2
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功