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

  • 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)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值