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),为一个左闭右开区间;第三个参数为步长。