Python学习(十)——使用NumPy函数库

时间:2022-04-10 03:17:41

1、导入NumPy函数库:

一般约定将numpy重命名为np。

import numpy as np

2、使用ndarray创建数组
ndarray对象(N-dimensional array object)
Python中的list的每个元素本质是对象,对于数值运算较为浪费。因此numpy提供了ndarray对象来存储单一数据类型的多维数组。

①使用array创建:

通过向array函数传递序列创建多维数组:
传递list、tuple:

a=np.array([4,5,6])
b=np.array((1,2,3))
print a,b

输出:
[4 5 6] [1 2 3]
传递多层嵌套序列:

a=np.array([[4,5,6],[7,8,9],[0,1,2]])
b=np.array(((1,2,3),(4,5,6),(7,8,9)))
c=np.array([(1,4,7),(2,5,8),(3,6,9)])
d=np.array(([9,8,7],[6,5,4],[3,2,1]))
print a,'\n',b,'\n',c,'\n',d

输出:
[[4 5 6]
[7 8 9]
[0 1 2]]
[[1 2 3]
[4 5 6]
[7 8 9]]
[[1 4 7]
[2 5 8]
[3 6 9]]
[[9 8 7]
[6 5 4]
[3 2 1]]

②查看数据类型:

a=np.array([(1,4,7),(2,5,8),(3,6,9)])
print type(a)

输出:

a=np.array([(0,1,4,7,10),(-1,2,5,8,11)])
b=np.array((0,1,2,3,4,5))
print a.shape
print b.shape

输出:
(2L, 5L)
(6L,)
结果(2L, 5L) 表示2行5列,L表示长整型;

④修改shape

a=np.array([(1,4,7,10),(2,5,8,11),(21,15,8,11)])
a.shape=2,6
print a

输出:
[[ 1 4 7 10 2 5]
[ 8 11 21 15 8 11]]

行或列置为-1,则系统会根据设置的列或行值自动计算;

a=np.array([(1,4,7,10),(2,5,8,11),(21,15,8,11)])
a.shape=4,-1
print a

输出:
[[ 1 4 7]
[10 2 5]
[ 8 11 21]
[15 8 11]]

⑤使用reshape,保持原数组的shape不变:

a=np.array([(1,4,7,10),(2,5,8,11),(21,15,8,11)])
b=a.reshape((2,-1))
print 'a=\n',a
print 'b=\n',b

输出:
a=
[[ 1 4 7 10]
[ 2 5 8 11]
[21 15 8 11]]
b=
[[ 1 4 7 10 2 5]
[ 8 11 21 15 8 11]]

注意:reshape并非新建了一个数据,二者共享内存,任意一个改变都会将数据修改;

a=np.array([(1,4,7,10),(2,5,8,11),(21,15,8,11)])
b=a.reshape((2,-1))
b[0][0]=100
print 'a=\n',a
print 'b=\n',b

输出:
a=
[[100 4 7 10]
[ 2 5 8 11]
[ 21 15 8 11]]
b=
[[100 4 7 10 2 5]
[ 8 11 21 15 8 11]]

⑥通过dtype属性获取数组元素的类型或指定元素类型:

1)获取元素类型:

a=np.array([(1,4,7,10),(2,5,8,11),(21,15,8,11)])
print a.dtype

输出:
int32
即32位的整型
2)指定元素类型:

a=np.array([(1,4,7,10),(2,5,8,11),(21,15,8,11)],dtype=np.float)
print a.dtype
print a

输出:
float64
[[ 1. 4. 7. 10.]
[ 2. 5. 8. 11.]
[ 21. 15. 8. 11.]]

⑦通过astype改变元素类型:

a=np.array([(1,4,7,10),(2,5,8,11),(21,15,8,11)],dtype=np.float)
b=a.astype(np.complex)
print b
print b.dtype

输出:
[[ 1.+0.j 4.+0.j 7.+0.j 10.+0.j]
[ 2.+0.j 5.+0.j 8.+0.j 11.+0.j]
[ 21.+0.j 15.+0.j 8.+0.j 11.+0.j]]
complex128

3、使用函数创建数组
①arange函数:

a=np.arange(1,5,0.2)
print a

输出:
[ 1. 1.2 1.4 1.6 1.8 2. 2.2 2.4 2.6 2.8 3. 3.2 3.4 3.6 3.8
4. 4.2 4.4 4.6 4.8]
arrange函数前两个参数为输出数列的区间[1,5),为一个左闭右开区间;第三个参数为步长。


Python学习(十)——使用NumPy函数库