大数据基础之Python——Numpy框架详解

Numpy 入门

Numpy安装

首先更改pip的国内镜像源,因为国外的源下载东西他太慢了
Windows环境下:

  • 在user用户目录下创建一个名为pip的文件夹
    在这里插入图片描述
  • 在文件夹内创建一个名为pip的文本文件(创建完成后将“.txt”改为".ini")
    在这里插入图片描述
  • 将以下代码拷贝到文件里
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
[install]
trusted-host = https://pypi.tuna.tsinghua.edu.cn  
//trusted-host 此参数是为了避免麻烦,否则使用的时候可能会提示不受信任

修改完成!!!
在cmd界面执行以下命令下载numpy库:

pip install numpy

导入Numpy

import numpy as np

接下来就可以用np去操作数组了。

Numpy数组创建

Numpy用于处理数组。Numpy中的数组对象称为ndarray

创建ndarray

arr = np.array([1,2,3,4,5,6])
print(arr)
print(type(arr))       //查看arr的类型

数组中的维度

0-D数组

0-D数组就是数组中的元素,数组中的每个值都是一个0-D数组。

arr = np.array(61)
1-D数组
arr = np.array([1,2,3,4,5,6])
2-D数组
arr = np.array([[1,2,3],[4,5,6]])
3-D数组
arr = np.array([[[1,2,3],[4,5,6]],[[1,2,3],[4,5,6]]])

获取数组的维度

a = np.array(42)
b = np.array([1, 2, 3, 4, 5])
c = np.array([[1, 2, 3], [4, 5, 6]])
d = np.array([[[1, 2, 3], [4, 5, 6]], [[1, 2, 3], [4, 5, 6]]])

print(a.ndim) 
print(b.ndim) 
print(c.ndim) 
print(d.ndim)

更高维度的数组

arr = np.array([1,2,3,4],ndim=5)
// [[[[[1,2,3,4]]]]]

数组的索引

访问一维数组元素

arr = np.array([1,2,3,4])
print(arr[1])

访问二维数组元素

arr = np.array([[1,2,3],[4,5,6]])
print(arr[1,2])          //6

访问三维数组元素

arr = np.array([[[1,2,3],[4,5,6]],[[7,8,9],[10,11,12]]])
print(arr[1,1,2])     //12

负索引

arr = np.array([[1,2,3],[4,5,6]])
print(arr(1,-1))     //6

数组切割

指定所以切割

arr = np.array([1, 2, 3, 4, 5, 6, 7])
print(arr[1:5])       //2,3,4,5

指定开头

arr = np.array([1, 2, 3, 4, 5, 6, 7])
print(arr[4:])             //5,6,7

指定结尾

arr = np.array([1, 2, 3, 4, 5, 6, 7])
print(arr[:4])            //1,2,3,4

负索引切割

arr = np.array([1, 2, 3, 4, 5, 6, 7])
print(arr[-3:-1])          //5,6

step

arr = np.array([1, 2, 3, 4, 5, 6, 7])
print(arr[1:5:2])         //2,4

切割2-D数组

arr = np.array([[1, 2, 3, 4, 5], [6, 7, 8, 9, 10]])
print(arr[1, 1:4])          //7,8,9

从两个元素中返回索引2

arr = np.array([[1, 2, 3, 4, 5], [6, 7, 8, 9, 10]])
print(arr[0:2, 2])          //3,8

从两个元素中切割索引1-4的元素

arr = np.array([[1, 2, 3, 4, 5], [6, 7, 8, 9, 10]])
print(arr[0:2, 1:4])          [[2,3,4],[7,8,9]]

数组的形状

获取数组的形状

arr = np.array([[1, 2, 3, 4], [5, 6, 7, 8]])
print(arr.shape)        // (2,4)

数组重塑

从1-D重塑为2-D

arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])
newarr = arr.reshape(4, 3)
//[[1,2,3]
	[4,5,6]
	[7,8,9]
	[10,11,12]]

从1-D重塑为3-D

arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])
newarr = arr.reshape(2,3,2)
//[[[1,2],
	[3,4],
	[5,6]]

	[[7,8]
	[9,10]
	[11,12]]]

展平数组

arr = np.array([[1, 2, 3], [4, 5, 6]])
newarr = arr.reshape(-1)             //[1,2,3,4,5,6]

数组迭代

迭代一维数组

arr = np.array([1, 2, 3])
for x in arr:
  print(x)
 //1 
 2
 3

迭代二维数组

arr = np.array([[1, 2, 3],[4,5,6]])
for x in arr:
  print(x)
 //[1,2,3] [4,5,6]
 //迭代每个元素
 for x in arr:
  for y in x:
    print(y)

迭代三维数组

arr = np.array([[[1,2,3],[4,5,6]],[[7,8,9],[10,11,12]]])
for x in arr:
  print(x)
//[[1,2,3],[4,5,6]]
[[7,8,9],[10,11,12]]

//迭代到每个元素
for x in arr:
  for y in x:
    for z in y:
      print(z)

nditer()迭代数组

//迭代每个元素
arr = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
for x in np.nditer(arr):
  print(x)
  //1,2,3,4,5,6,7,8

以不同的步长迭代

arr = np.array([[1, 2, 3, 4], [5, 6, 7, 8]])
for x in np.nditer(arr[:, ::2]):
  print(x)
  //1,3,5,7

数组连接

连接两个数组

arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])
arr = np.concatenate((arr1, arr2))
print(arr)

沿行连接两个2-D数组

arr1 = np.array([[1, 2], [3, 4]])
arr2 = np.array([[5, 6], [7, 8]])
arr = np.concatenate((arr1, arr2), axis=1)
print(arr) 
//[[1,2,5,6][3,4,7.8]]

数组拆分

将一维数组拆分为3部分

arr = np.array([1, 2, 3, 4, 5, 6])
newarr = np.array_split(arr, 3)
print(newarr)
//[array([1, 2]), array([3, 4]), array([5, 6])]

拆分二维数组

arr = np.array([[1, 2], [3, 4], [5, 6], [7, 8], [9, 10], [11, 12]])
newarr = np.array_split(arr, 3)
print(newarr)
//[array([[1, 2],
       [3, 4]]), array([[5, 6],
       [7, 8]]), array([[ 9, 10],
       [11, 12]])]

数组搜索

where()

arr = np.array([1, 2, 3, 4, 5, 4, 4])
x = np.where(arr == 4)
print(x)         //array([3,5,6])


arr = np.array([1, 2, 3, 4, 5, 6, 7, 8])
x = np.where(arr%2 == 0)
print(x)
//array([1, 3, 5, 7]

搜索排序

首先数组内的元素应该保证有序,不然该方法无效!!!!查找应在其中插入值 7 的索引:

arr = np.array([6, 7, 8, 9])
x = np.searchsorted(arr, 7)
print(x)       //1

//从右侧开始
arr = np.array([6, 7, 8, 9])
x = np.searchsorted(arr, 7, side='right')
print(x)          //2

数组排序

sort()

arr = np.array([3, 2, 0, 1])
print(np.sort(arr))
//[0,1,2,3]

对2-D数组排序

arr = np.array([[3, 2, 4], [5, 0, 1]])
print(np.sort(arr))
//[[2 3 4]
 [0 1 5]]
//仅保证每个维度内的数据有序

数组过滤

布尔值过滤

在 NumPy 中,我们使用布尔索引列表来过滤数组。布尔索引列表是与数组中的索引相对应的布尔值列表。如果索引处的值为 True,则该元素包含在过滤后的数组中;如果索引处的值为 False,则该元素将从过滤后的数组中排除。

arr = np.array([61, 62, 63, 64, 65])
x = [True, False, True, False, True]
newarr = arr[x]
print(newarr)

创建过滤器数组

arr = np.array([61, 62, 63, 64, 65])

//创建一个空列表
filter_arr = []

//遍历 arr 中的每个元素
for element in arr:
//如果元素大于 62,则将值设置为 True,否则为 False:
  if element > 62:
    filter_arr.append(True)
  else:
    filter_arr.append(False)
newarr = arr[filter_arr]
print(filter_arr)
print(newarr)
//[False, False, True, True, True]
[63 64 65]

直接过滤

arr = np.array([61, 62, 63, 64, 65])
filter_arr = arr > 62
newarr = arr[filter_arr]
print(filter_arr)
print(newarr)
//[False False  True  True  True]
[63 64 65]

numpy随机数

生成随机数

from numpy import random
x = random.randint(100)
print(x)

生成随机浮点数

x = random.rand()
print(x)

生成有3行,每行5个元素的随机二维数组

x = random.randint(100,size(3,5))
print(x)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值