python-Numpy数据分析(一)
【摘要】
python-Numpy数据分析(一)
使用numpy创建数据
import numpy as np print('将普通的一维列表生成Numpy一维数组')data = [1,23,45,5,4]arr = np.array(data)print(arr)print('打印数组元素类型')print(arr.dty...
python-Numpy数据分析(一)
使用numpy创建数据
-
import numpy as np
-
-
print('将普通的一维列表生成Numpy一维数组')
-
data = [1,23,45,5,4]
-
arr = np.array(data)
-
print(arr)
-
print('打印数组元素类型')
-
print(arr.dtype)
-
-
print('将普通的二维列表生成Numpy二维数组')
-
data = [[1,23,45,5,4],[3,5,6,7,8]]
-
arr = np.array(data)
-
print(arr)
-
print('打印数组维度')
-
print(arr.shape)
-
-
print('使用zeros/empty')
-
print('生成包含10个0的一维数组')
-
print(np.zeros(10))#生成包含10个0的一维数组
-
-
print('生成2*3的二维数组')
-
print(np.zeros((2,3)))#生成2*3的二维数组
-
-
print('生成3*2*4的三维数组,所有元素未初始化')
-
print(np.empty(3*2*4))#生成3*2*4的三维数组,所有元素未初始化
-
-
print('使用arange生成连续元素')
-
print(np.arange(15))
NumPy的ndarray NumPy数据类型
-
import numpy as np
-
-
print('生成数组时指定数据类型')
-
arr = np.array([1,2,43,545],dtype=np.float64)
-
print(arr.dtype)
-
-
print('使用astype复制数组并转换数据类型')
-
int_arr = np.array([1,23,454,56,54])
-
float_arr = int_arr.astype(np.float)
-
print(float_arr.dtype)
-
-
print('使用astype将float转换为int时小数部分舍掉')
-
float_arr2 = np.array([1.34,2.54,4.23432,5.45454,6.54,7.5])
-
int_arr2 = float_arr2.astype(np.int)
-
print(int_arr2)
-
-
print('使用astype把字符串转换为数组,如果失败抛出异常')
-
str_arr = np.array([1.2323,4.54545,6.34],dtype = np.string_)
-
float_arr3 = str_arr.astype(dtype = np.float)
-
print(float_arr3)
-
-
print('astype使用其他数组的数据类型作为参数')
-
int_arr3 = np.arange(10)
-
float_arr4 = np.array([2.34,4.34],dtype=np.float64)
-
print(int_arr3.astype(float_arr4.dtype))
-
print(int_arr3[0],int_arr3[1])
NumPy的ndarray 数组和标量之间的运算
-
import numpy as np
-
'''
-
NumPy的ndarray 数组和标量之间的运算
-
• 不用编写循环即可对数据执行批量运算
-
• 大小相等的数组之间的任何算术运算都会将运算应用到元素级
-
• 数组与标量的算术运算也会将那个标量值传播到各个元素
-
'''
-
#数组乘法/减法,对应元素相乘/相减
-
arr = np.array([[1,2,3,4,5],[1,2,3,4,5]])
-
print(arr*arr)
-
print(arr-arr)
-
-
#标量操作作用在数组的每个元素上
-
arr = np.array([[1,2,3,4],[1,2,3,4]])
-
print(1/arr)
-
print(arr ** 0.5)
NumPy的ndarray 基本的索引和切片
-
import numpy as np
-
-
#通过索引访问二维数组某一行或某个元素
-
arr = np.array([[1,2,3,45],[6,7,8,9]])
-
print(arr[0]) #访问第一行数组元素
-
print(arr[0][1])# 访问第一行数组的第二个元素
-
print(arr[0,1]) # numpy访问方式,普通python不可以使用。访问第一行数组的第二个元素
-
-
#使用切片访问和操作
-
arr = np.array([1,2,3,4,5,6,7,8,9])
-
print(arr[1:6]) # 打印元素arr[1]到arr[5]
-
arr2 = np.array([[1,2,3],[4,5,6],[7,8,9]])
-
print(arr2[:2]) #打印第1、2行
-
print(arr2[:2,1])#打印第1、2行的第2列
-
print(arr2[:,:1])#打印第一行第一列的所有元素
-
arr2[:2,1:]=0 #将第1、2行的第2、3列设置为0
-
print(arr2)
-
-
NumPy的ndarray 布尔型索引
-
'''
-
NumPy的ndarray 布尔型索引
-
• 布尔型数组的长度必须跟被索引的轴长度一致。
-
• 可以将布尔型数组跟切片、整数(或整数序列)混合使用
-
-
'''
-
import numpy as np
-
import numpy.random as np_random
-
-
print('使用boolean数组作为索引')
-
name_arr = np.array(['Bob','libai','dufu','wangzijian','zhanguo','huanming','tangguowei'])
-
ran_arr = np.random.randn(7,4) # 随机7*4数组
-
print(ran_arr)
-
print(name_arr == 'Bob') # 返回布尔数组,元素等于'Bob'为True,否则False。
-
print(ran_arr[name_arr == 'Bob']) # 利用布尔数组选择行
NumPy的ndarray 花式索引
-
'''
-
NumPy的ndarray 花式索引
-
• 花式索引(Fancy indexing)是一个NumPy术语,它指的是利用整数数组进
-
行索引。
-
• 一次传入多个索引数组会有一点特别。它返回的是一个一维数组,其中的元素
-
对应各个索引元组。
-
'''
-
import numpy as np
-
-
print('使用整数数组作为索引')
-
arr = np.empty((8,4))
-
for i in range(8):
-
arr[i] = i
-
print(arr)
-
-
print(arr[[4,3,2,6]])# 打印arr[4]、arr[3]、arr[2]和arr[6]。
-
print(arr[[-3,-5,-7]]) # 打印arr[-3]、arr[-5]和arr[-7]行,就是打印倒数第3、5、7行
-
-
arr2 = np.arange(32).reshape(8,4) # 通过reshape变换成二维数组
-
print('arr2数组\n',arr2)
-
print('打印arr2[1, 0]、arr[5, 3],arr[7, 1]和arr[2, 2]')
-
print(arr2[[1,5,7,2],[0,3,1,2]]) #[ 4 23 29 10]
-
print('arr2分别打印1、5、7、2行每行的0、3、1、2列的数据')
-
print(arr2[[1,5,7,2]][:,[0,3,1,2]])
-
print('使用np.ix_()方法输出上面的效果')
-
print(arr2[np.ix_([1,5,7,2],[0,3,1,2])])
-
NumPy的ndarray 数组转置和轴对换
-
import numpy as np
-
import numpy.random as np_random
-
-
print('转置矩阵')
-
arr = np.arange(15).reshape((3,5)) #自动生成3行5列数组
-
print(arr)
-
print(arr.T) #arr.T 改属性可以将矩阵的行和列对调,使得行变为列,列变为行
-
-
print('转置矩阵做点乘积')
-
arr2 = np.arange(15).reshape((3,5))
-
print(np.dot(arr.T,arr2)) #利用np.dot计算矩阵内积XTX
-
-
print('高维矩阵转换')
-
arr3 = np.arange(16).reshape((2,2,4))
-
print(arr3)
-
'''
-
详细解释:
-
arr数组的内容为
-
- a[0][0] = [0, 1, 2, 3]
-
- a[0][1] = [4, 5, 6, 7]
-
- a[1][0] = [8, 9, 10, 11]
-
- a[1][1] = [12, 13, 14, 15]
-
transpose的参数为坐标,正常顺序为(0, 1, 2, ... , n - 1),
-
现在传入的为(1, 0, 2)代表a[x][y][z] = a[y][x][z],第0个和第1个坐标互换。
-
- a'[0][0] = a[0][0] = [0, 1, 2, 3]
-
- a'[0][1] = a[1][0] = [8, 9, 10, 11]
-
- a'[1][0] = a[0][1] = [4, 5, 6, 7]
-
- a'[1][1] = a[1][1] = [12, 13, 14, 15]
-
'''
-
print('arr3高维矩阵转换')
-
print(arr3.transpose((1, 0, 2)))
-
print('直接交换第1和第2个坐标')
-
print(arr3.swapaxes(1, 2)) # 直接将第1和第2个轴坐标对换
-
NumPy的ndarray 快速的元素级数组函数
-
'''
-
NumPy的ndarray 快速的元素级数组函数
-
• 一元函数 I
-
类型 说明
-
abs, fabs 计算整数、浮点数或复数的绝对值。对于非复数值,可以使用更快的fabs。
-
sqrt 计算各元素的平方根。相当于arr ** 0.5
-
sqare 计算各元素的平方。相当于arr ** 2
-
exp 计算各元素的e^x
-
log, log10, log2, log1p 分别为自然对数、底数为10的log、底数为2的log和log(1 + x)。
-
sign 计算各元素的正负号:1(正数)、0(零)、-1(负数)。
-
ceil 计算各元素的ceiling值,即大于等于该值的最小整数。
-
floor 计算各元素的floor值,即小于等于该值的最小整数。
-
-
NumPy的ndarray 快速的元素级数组函数
-
• 一元函数 II
-
类型 说明
-
rint 将各元素值四舍五入到最接近的整数,保留dtype。
-
modf 将数组的小数部分与整数部分以两个独立数组的形式返还。
-
isnan 返回一个表示“哪些值是NaN(这不是一个数字)”的布尔型数组
-
isfinite, isinf 分别返回一个表示“哪些元素是有限的(非inf,非NaN)”或“哪些元素是
-
无穷的”的布尔型数组
-
cos, cosh, sin, sinh, tan, tanh 普通型或双曲型三角函数
-
arccos, arccosh, arcsin, arcsinh,arctan, arctanh 反三角函数
-
logical_not 计算各元素not x的真值。相当于-arr。
-
-
NumPy的ndarray 快速的元素级数组函数
-
• 二元函数 I
-
类型 说明
-
add 将数组中对应的元素相加
-
subtract 从第一个数组中减去第二个数组中的元素
-
multiply 数组元素相乘
-
divide, floor_divide 除法或向下取整除法
-
power 对第一个数组中的元素A和第二个数组中对应位置的元素B,计算A^B。
-
maximum, fmax 元素级的最大值计算。fmax将忽略NaN。
-
minimum, fmin 元素级的最小值计算。fmin将忽略NaN。
-
mod 元素级的求模计算
-
-
NumPy的ndarray 快速的元素级数组函数
-
• 二元函数 II
-
类型 说明
-
copysign 将第二个数组中的符号复制给第一个数组中的值
-
greater, greater_equal, less,less_equal,equal, not_equal 执行元素级的比较,最终产生布尔型数组。
-
logical_and, logical_or,logical_xor 执行元素级的真值逻辑运算,最终产生布尔型数组
-
'''
-
import numpy as np
-
import numpy.random as np_random
-
-
print('求平方根')
-
arr = np.arange(10)
-
print(arr)
-
print(np.sqrt(arr))
-
-
print('数组比较')
-
x = np_random.randn(8)
-
y = np_random.randn(8)
-
print(x)
-
print(y)
-
print(np.maximum(x,y))
-
-
print('使用modf函数把浮点数分解成整数和小数部分')
-
arr = np_random.randn(7)*5
-
print(np.modf(arr))
文章来源: brucelong.blog.csdn.net,作者:Bruce小鬼,版权归原作者所有,如需转载,请联系作者。
原文链接:brucelong.blog.csdn.net/article/details/80666622
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)