您的位置:首页 > 编程语言 > Python开发

NumPy基础 -- 1. ndarray (多维数组对象)

2017-03-23 17:31 411 查看
NumPy最重要的一个特点是其 N维数组对象 ndarray,该对象是一个快速而灵活的大数据集容器。

其中所有元素必须是相同类型的

每个数组都有一个shape(表示各维度大小的元组)和一个dtype(表明数组数据类型)

一.创建 nbarray

1.使用array函数,接受一切序列对象

data1 = [6,7.5,8,0,1]
arr1 = np.array(data1)
print (arr1)


2. 嵌套序列,也会被转换为一个多维数组

data2 = [[1,2,3,4], [5,6,7,8]]
arr2 = np.array(data2)
print (arr2)


3. zeros和ones创建指定长度或形状全0或全1数组

z1 = np.zeros(10)
print(z1)


4. 使用np内置函数arange

a1 = np.arange(15)
print(a1)


二. ndarray的数据类型

1. dtype, 默认是float64类型

arr1 = np.array([1,2,3],dtype=np.int32)
print(arr1.dtype)


2. 显式类型转换,astype()

arr = np.array([1,2,3,4,5])
print (arr.dtype)

#整数转成浮点数
float_arr = arr.astype(np.float64)
print (float_arr.dtype)


三. 数组和标量之间的运算

arr = np.array([[1,2,3],[4,5,6]])
arr * arr
arr - arr
1 / arr
arr ** 0.5


四.基本的索引和切片

1.一组数组

arr = np.arange(10)

#索引
arr[5]
#5

#切片
arr[5:8]
#[5,6,7]

#对切片赋值
arr[5:8]=12
#[0,1,2,3,4,12,12,12,8,9]

跟列表最重要的区别在于:数据不会被复制,直接反映的是源数组
#把一个切片赋值给一个变量,对这个变量改值,会影响到原始数据
arr_slice = arr[5:8]
arr_slice[1] = 12345
print (arr)
#[0,1,2,3,4,12,12345,12,8,9]


2. 对于高维度数组

高维度索引,返回低一层级

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

arr2d[2]
#返回一个一维数据,array([7,8,9])表,返回单个元素
arr2d[0][2]
#3

#这两种表示方式是一样的
arr2d[0,2]
#3


切片索引

#一维对象
arr[1:6]
#array([1,2,3,4,64])

#二维对象
arr2d
#array([[1,2,3],
[4,5,6],
[7,8,9]])

#沿第0轴切片,也就是X轴
arr2d[:2]
#array([[1,2,3],
[4,5,6]])

#沿第X轴,Y轴切片
arr2d[:2, 1:]
#array([[2,3],
[5,6]])


五. 布尔型索引

names = np.array(['Bob','Joe','Will','Bob','Will','Joe','Joe'])

#正态分布的随机数据,7x4
data = randn(7,4)

names == 'Bob'
#将会产生一个布尔型数组:
#array([True,False,False,True,False,FalseFalse])


这个布尔型数组,可用于数组索引

data[names == 'Bob']


布尔型数组的长度必须跟被索引的轴长度一致

除‘Bob’以外,即可以用(!=)也可以用负号(-)

data[-(names == 'Bob')]
data[names != 'Bob']


六. 花式索引

利用整数数组进行索引

array([[0,0,0,0],
[1,1,1,1],
[2,2,2,2],
[3,3,3,3],
[4,4,4,4],
[5,5,5,5],
[6,6,6,6],
[7,7,7,7]])


为了以特定顺序选取行子集,只需传入一个用于指定顺序的整数列表即可:

arr[[4,3,0,6]]

#array([[4,4,4,4],
[3,3,3,3],
[0,0,0,0],
[6,6,6,6]])


七. 数组转置和轴对换

1. T 属性

arr = np.arange(15).reshape(3,5)
print(arr)

print(arr.T)


2. 计算矩阵内积,XX

arr = np.random.randn(6,3)
np.dot(arr.T, arr)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: