Python中NumPy基础使用

Python发展至今,已经有越来越多的人使用python进行科学技术,NumPY是python中的一款高性能科学计算和数据分析的基础包。

 

ndarray

ndarray(以下简称数组)是numpy的数组对象,需要注意的是,它是同构的,也就是说其中的所有元素必须是相同的类型。其中每个数组都有一个shape和dtype。

shape既是数组的形状,比如

 1 import numpy as np
 2 from numpy.random import randn
 3 
 4 arr = randn(12).reshape(3, 4)
 5 
 6 arr
 7 
 8 [[ 0.98655235  1.20830283 -0.72135183  0.40292924]
 9  [-0.05059849 -0.02714873 -0.62775486  0.83222997]
10  [-0.84826071 -0.29484606 -0.76984902  0.09025059]]
11 
12 arr.shape 
13 (3, 4)

其中(3, 4)即代表arr是3行4列的数组,其中dtype为float64

一下函数可以用来创建数组

array   将输入数据转换为ndarray,类型可制定也可默认
asarray   将输入转换为ndarray
arange 类似内置range
ones、ones_like   根据形状创建一个全1的数组、后者可以复制其他数组的形状
zeros、zeros_like 类似上面,全0
empty、empty_like 创建新数组、只分配空间
eye、identity 创建对角线为1的对角矩阵

数组的转置和轴对称

转置是多维数组的基本运算之一。可以使用.T属性或者transpose()来实现。.T就是进行轴对换而transpose则可以接收参数进行更丰富的变换

arr = np.arange(6).reshape((2,3))
print arr

[[0 1 2]
 [3 4 5]]

print arr.T

[[0 3]
 [1 4]
 [2 5]]

arr = np.arange(24).reshape((2,3,4))
print arr

[[[ 0  1  2  3]
  [ 4  5  6  7]
  [ 8  9 10 11]]

 [[12 13 14 15]
  [16 17 18 19]
  [20 21 22 23]]]

print arr.transpose((0,1,2))
[[[ 0  1  2  3]
  [ 4  5  6  7]
  [ 8  9 10 11]]

 [[12 13 14 15]
  [16 17 18 19]
  [20 21 22 23]]]

 

 

数组的运算

大小相等的数组之间做任何算术运算都会将运算应用到元素级别。

 1 arr = np.arange(9).reshape(3, 3)
 2 print arr
 3 
 4 [[0 1 2]
 5  [3 4 5]
 6  [6 7 8]]
 7 
 8 print arr*arr
 9 
10 [[ 0  1  4]
11  [ 9 16 25]
12  [36 49 64]]
13 
14 print arr+arr
15 
16 [[ 0  2  4]
17  [ 6  8 10]
18  [12 14 16]]
19 
20 print arr*4
21 
22 [[ 0  4  8]
23  [12 16 20]
24  [24 28 32]]

numpy的简单计算中,ufunc通用函数是对数组中的数据执行元素级运算的函数。

如:

arr = np.arange(6).reshape((2,3))
print arr

[[0 1 2]
 [3 4 5]]

print np.square(arr)

[[ 0  1  4]
 [ 9 16 25]]

类似的有:abs,fabs,sqrt,square,exp,log,sign,ceil,floor,rint,modf,isnan,isfinite,isinf,cos,cosh,sin,sinh,tan,tanh,

add,subtract,multiply,power,mod,equal,等等

 

posted @ 2016-03-06 17:10  李琼羽  阅读(14321)  评论(0编辑  收藏  举报