Numpy 切片与索引
2018-02-02 本文已影响0人
绍重先
#-*-coding:utf-8-*-
#2018/2/2
import numpy as np
#基本的索引和切片
arr=np.arange(10)
arr[5:8] = 13.7
print arr
#数组切片是原始数组的视图->数据不会被复制->视图上的任何修改会反应到源数组上(大数据处理)
#如果想要一份副本,则要显式进行复制操作 如arr[5:8].copy()
arr_slice = arr[5:8]
print arr_slice
print arr
#高维数组索引
arr3d = np.array([[[1,2,3],[4,5,6]],[[7,8,9],[10,11,12]]])
print arr3d
#arr3d[0]是一个2x3数组
'''
array([[1,2,3],
[4,5,6]])
'''
#标量值和数组都可以被赋值给arr3d[0]
old_values = arr3d[0].copy()
print old_values
arr3d[1] = 20
print arr3d[1]
#切片索引
arr2d = np.array([[1,2,3],[4,5,6],[7,8,9]])
print arr2d[1:2,1:2]
#布尔型索引
names = np.array(['Bob','Joe','Will','Joe','Joe'])
print names
#使用numpy.random中的randn函数生成正太(误)分布随机数据
data = np.random.randn(7,4)
print names.dtype
print names == 'Bob'
print data[names == 'Bob']
mask = (names == 'Bob')|(names == 'Will')
print data[mask]
#通过布尔型数组设置值
#将data中所有负值设置为0
data[data<0] = 0
print data
data.astype(np.float32)
print data