python Numpy基础(多维数组对象)

python Numpy基础(多维数组对象)

一、Numpy初体验

  1. 生成随机数组
import numpy as np #导入Numpy模块
#生成随机数组
data = np.random.randn(2,2)#定义生成为2行2列的二维数组
data
#输出array的2行2列的多维数组
array([[-1.13431267,  0.62352469],
       [-0.63744491, -0.26528683]])
  1. 然后给data加上一个数学操作:
#所有的元素同时都乘以10
data * 10
array([[-11.34312675,   6.23524693],
       [ -6.37444905,  -2.65286835]])
#对应元素进行了相加
data + data
rray([[-2.26862535,  1.24704939],
       [-1.27488981, -0.53057367]])
  1. 查看数组的数据类型
#shape用来描述数组每一维度的数量
data.shape
#说明data是一个2行2列的多维数组2,2#dtype用来描述数组的数据类型
data.dtype
#float64 标准的双精度浮点数
dtype('float64')

每一个数组都有一个shape属性和dtype属性

二、生成nadarray,进行数组关系运算

  1. 生成nadarray

生成数组最简单的方式是使用array函数

  • 例:
data1 = [1,2.5,5,4,3]
arr1 = np.array(data1)
arr1
array([1. , 2.5, 5. , 4. , 3. ])
#观察发现 除了浮点数 其他的元素都默认在后面生成了一个 .  都变成了一个浮点数


#嵌套序列,如果长度相同,会自动转换成多维数组
data2 = [[1,2,3,4],[5,6,7,8]]
arr2 = np.arrary(data2)
arr2
array([[1,2,3,4],[5,6,7,8]])
  1. 数组运算
arr = np.array([[1.,2.,3.],[4.,5.,6.]])
#相乘
arr * arr
array([[ 1.,  4.,  9.],[16., 25., 36.]])
#相减
arr - arr
array([[0., 0., 0.],[0., 0., 0.]])
#相除
2 / arr
array([[2.        , 1.        , 0.66666667],
       [0.5       , 0.4       , 0.33333333]])
#幂运算
arr ** 2
array([[ 1.,  4.,  9.],[16., 25., 36.]])

三、索引、切片

一维数组的索引和切片和Python非常相似,有Python基础的话很容易理解

  1. 一维数组的操作
#arange 和 Python中的range()等同
arr = np.arange(10)
arr
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
#索引第一个元素
arr[0]
0
#切出 下标为3 到 5的元素,因为和range等同,所以也是为左闭右开 arr([a:b]) -> a 至 b-1
arr[3:6]
array([3,4,5])
#将下标为3 到 5的元素位置的元素修改为10
arr[3:6] = 10
arr
array([ 0,  1,  2, 10, 10, 10,  6,  7,  8,  9])
#当然也可以单个更改
arr[0] = 200
arr
array([200,   1,   2,  10,  10,  10,   6,   7,   8,   9])

2.二维数组的操作

在一个二维数组中,每个索引值对应的元素不再是一个值 而是一个一维数组

#和Python基础中 其实大同小异
arr2 = np.array([[1,2,3],[4,5,6],[7,8,9]])
arr2[0]
array([1,2,3])
#单个元素可以通过递归的方式获取
#方法一 
arr2[0][2] #在arr2中获取第一个列表[1,2,3]再从在中获取下标为2的元素
3
#方法二
arr2[0,2] #在arr2中获取第一个列表[1,2,3]再从在中获取下标为2的元素
3
arr3 = np.array([[[1,2,3],[4,5,6]],[[7,8,9],[10,11,12]]])
arr3
array([[[1,2,3],[4,5,6]],
	   [[7,8,9],[10,11,12]]])


#因为arr3是一个两行三列的数组 所以第一个是([1,2,3],[4,5,6])
arr3[0]
array([1,2,3],
      [4,5,6])
#复制arr3[0]的值给data_value
data_value = arr3[0].copy()
#将第一位的所有元素的值更改为42
arr3[0]=42
array([[[42,42,42],[42,42,42]],[[7,8,9],[10,11,12]]])
#将data_value重新赋值给arr3[0]
arr3 [0] = data_value
arr3
array([[[1,2,3],[4,5,6]],
	   [[7,8,9],[10,11,12]]])
#类似的 arr3[1,0]返回的是一个一维数组
arr3[1,0]
array([7,8,9])

注:本文章皆参考<<利用python进行数据分析>>第二版

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

跑不完的脚本

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值