python数据分析——numpy基础(一)

1、创建Numpy数组

import numpy as np

print '使用普通一维数组生成NumPy一维数组'
data = [6, 7.5, 8, 0, 1]
arr = np.array(data)
print arr
print '打印元素类型'
print arr.dtype
print 

print '使用普通二维数组生成NumPy二维数组'
data = [[1, 2, 3, 4], [5, 6, 7, 8]]
arr = np.array(data)
print arr
print '打印数组维度'
print arr.shape
print

print '使用zeros/empty'
print np.zeros(10) # 生成包含100的一维数组
print np.zeros((3, 6)) # 生成3*6的二维数组
print np.empty((2, 3, 2)) # 生成2*3*2的三维数组,所有元素未初始化。
print

print '使用arrange生成连续元素'
print np.arange(15)  # [0, 1, 2, ..., 14]

2、Numpy数组指定类型

import numpy as np

print '生成数组时指定数据类型'
arr = np.array([1, 2, 3], dtype = np.float64)
print arr.dtype
arr = np.array([1, 2, 3], dtype = np.int32)
print arr.dtype
print

print '使用astype复制数组并转换数据类型'
int_arr = np.array([1, 2, 3, 4, 5])
float_arr = int_arr.astype(np.float)
print int_arr.dtype
print float_arr.dtype
print

print '使用astype将float转换为int时小数部分被舍弃'
float_arr = np.array([3.7, -1.2, -2.6, 0.5, 12.9, 10.1])
int_arr = float_arr.astype(dtype = np.int)
print int_arr
print

print '使用astype把字符串转换为数组,如果失败抛出异常。'
str_arr = np.array(['1.25', '-9.6', '42'], dtype = np.string_)
float_arr = str_arr.astype(dtype = np.float)
print float_arr
print

print 'astype使用其它数组的数据类型作为参数'
int_arr = np.arange(10)
float_arr = np.array([.23, 0.270, .357, 0.44, 0.5], dtype = np.float64)
print int_arr.astype(float_arr.dtype)
print int_arr[0], int_arr[1]  # astype做了复制,数组本身不变。

3、numpy切片操作

import numpy as np

# 通过索引访问二维数组某一行或某个元素
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print arr[2]
print arr[0][2]
print arr[0, 2] # 普通Python数组不能用。
print

# 对更高维数组的访问和操作
arr = np.array([[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]])
print arr[0]  # 结果是个2维数组
print arr[1, 0] # 结果是个2维数组
old_values = arr[0].copy()  # 复制arr[0]的值
arr[0] = 42 # 把arr[0]所有的元素都设置为同一个值
print arr
arr[0] = old_values # 把原来的数组写回去
print arr
print

print '使用切片访问和操作数组'
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
print arr[1:6]  # 打印元素arr[1]到arr[5]
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print arr[:2] # 打印第12print arr[:2, 1:] # 打印第12行,第23print arr[:, :1]  # 打印第一列的所有元素
arr[:2, 1:] = 0 # 第12行,第23列的元素设置为0
print arr

4、numpy布尔索引

import numpy as np
import numpy.random as np_random

print '使用布尔数组作为索引'
name_arr = np.array(['Bob', 'Joe', 'Will', 'Bob', 'Will', 'Joe', 'Joe'])
rnd_arr = np_random.randn(7, 4) # 随机7*4数组
print rnd_arr
print name_arr == 'Bob' # 返回布尔数组,元素等于'Bob'为True,否则False。
print rnd_arr[name_arr == 'Bob']  # 利用布尔数组选择行
print rnd_arr[name_arr == 'Bob', :2]  # 增加限制打印列的范围
print rnd_arr[-(name_arr == 'Bob')] # 对布尔数组的内容取反
mask_arr = (name_arr == 'Bob') | (name_arr == 'Will') # 逻辑运算混合结果
print rnd_arr[mask_arr]
rnd_arr[name_arr != 'Joe'] = 7  # 先布尔数组选择行,然后把每行的元素设置为7。
print rnd_arr

5、花式索引

import numpy as np

# 花式索引
print('Fancy Indexing: 使用整数数组作为索引')
arr = np.empty((8, 4))
for i in range(8):
    arr[i] = i
print(arr)
print(arr[[4, 3, 0, 6]]) # 打印arr[4]、arr[3]、arr[0]和arr[6]。
print(arr[[-3, -5, -7]]) # 打印arr[-3]、arr[-5]和arr[-7]行
arr = np.arange(32).reshape((8, 4))  # 通过reshape变换成二维数组
print(arr)
print(arr[[1, 5, 7, 2], [0, 3, 1, 2]]) # 打印arr[1, 0]、arr[5, 3],arr[7, 1]和arr[2, 2]
print(arr[[1, 5, 7, 2]][:, [0, 3, 1, 2]]) # 1572行的0312print(arr[np.ix_([1, 5, 7, 2], [0, 3, 1, 2])]) # 可读性更好的写法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值