基础知识_Numpy(一)

目录

1、Numpy 基础学习

2、列表与numpy数组的区别

3、查看数组的结构

4、查看数组的类型

5、查看数组的大小

6、更改数组的结构

7、arange函数

8、linspace函数——返回等差数组

9、logspace函数——返回等比数列

10、创建特殊的数组

11、生成随机数

12、一维数组的索引和切片

13、多维数组的索引和切片★

14、改变数组的形状

15、数组的拼接与分割

16、np.any 、np.all

17、广播★

18、排序

19、np.multiply()、np.dot()和星号(*)三种乘法运算的区别★ 

20、几个重要的函数


1、Numpy 基础学习

        官方快速入门文档:

https://docs.scipy.org/doc/numpy/user/quickstart.html

        菜鸟教程:

NumPy 教程 | 菜鸟教程

         NLP Numpy、Pandas、Scikit-learn资料:

                 NLP Numpy、Pandas、Scikit-learn资料下载

2、列表与numpy数组的区别、数组的创建

        列表:可以保存多种数据类型

import numpy as np
list1 = [1,'1','a',True]
print(list1)
[1, '1', 'a', True]

        ndarray:只能保存一种数据类型【将优先级低的数据类型转化为优先级高的数据类型】

import numpy as np
list1 = [1,'1','a',True]
arr1 = np.array(list1)
print(arr1)
['1' '1' 'a' 'True']

       数组的创建

arr3 = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 1, 2, 3]])
print(arr3)

arr4 = np.array([[[1, 2, 3, 4], [5, 6, 7, 8], [9, 1, 2, 3]],
                 [[1, 2, 3, 4], [5, 6, 7, 8], [9, 1, 2, 3]]])
print(arr4)

3、查看数组的结构

import numpy as np
arr4 = np.array([[[1, 2, 3, 4], [5, 6, 7, 8], [9, 1, 2, 3]],
                 [[1, 2, 3, 4], [5, 6, 7, 8], [9, 1, 2, 3]]])
print(arr4.shape)

4、查看数组的类型

import numpy as np
arr4 = np.array([[[1, 2, 3, 4], [5, 6, 7, 8], [9, 1, 2, 3]],
                 [[1, 2, 3, 4], [5, 6, 7, 8], [9, 1, 2, 3]]])
print(arr4.dtype)

5、查看数组的大小

import numpy as np
arr4 = np.array([[[1, 2, 3, 4], [5, 6, 7, 8], [9, 1, 2, 3]],
                 [[1, 2, 3, 4], [5, 6, 7, 8], [9, 1, 2, 3]]])
print(arr4.size)

6、更改数组的结构

         .shape = ( ,,) 更改【原数组会发生改变】

import numpy as np
arr4 = np.array([[[1, 2, 3, 4], [5, 6, 7, 8], [9, 1, 2, 3]],
                 [[1, 2, 3, 4], [5, 6, 7, 8], [9, 1, 2, 3]]])
arr4.shape = (4,2,3)
print(arr4)

         .reshape更改【原始数组不会发生改变,返回一个新的对象】

import numpy as np
arr4 = np.array([[[1, 2, 3, 4], [5, 6, 7, 8], [9, 1, 2, 3]],
                 [[1, 2, 3, 4], [5, 6, 7, 8], [9, 1, 2, 3]]])
arr5 = arr4.reshape((4,3,2))
print(arr5)
print(arr4)

7、arange函数

li1 = [0, 1, 2, 3, 4]
print(li1)
li2 = list(range(5))
print(li2)

aran1 = np.arange(5)
print(aran1)

aran2 = np.arange(1, 10, 0.5) # 先比与 python 原始的 range,可以指定步长为小数
print(aran2)
[0, 1, 2, 3, 4]
[0, 1, 2, 3, 4]
[0 1 2 3 4]
[1.  1.5 2.  2.5 3.  3.5 4.  4.5 5.  5.5 6.  6.5 7.  7.5 8.  8.5 9.  9.5]

8、linspace函数——返回等差数组

arr5 = np.linspace(1, 10, 31)  # 默认是包含结尾的闭区间
print(arr5)
print(arr5.size)
[ 1.   1.3  1.6  1.9  2.2  2.5  2.8  3.1  3.4  3.7  4.   4.3  4.6  4.9
  5.2  5.5  5.8  6.1  6.4  6.7  7.   7.3  7.6  7.9  8.2  8.5  8.8  9.1
  9.4  9.7 10. ]
31

9、logspace函数——返回等比数列

arr6 = np.logspace(1, 5, 6)  # 1,5 默认值得是 10的n次方,与等差数列一样,默认是闭区间
print(arr6)
[1.00000000e+01 6.30957344e+01 3.98107171e+02 2.51188643e+03
 1.58489319e+04 1.00000000e+05]

10、创建特殊的数组

arr7 = np.zeros((2, 3))
print(arr7)

arr8 = np.eye(4)  # 单位矩阵
print(arr8)

arr9 = np.diag((2, 3, 4, 6))  # 对角矩阵
print(arr9)

arr10 = np.ones((3, 4))  # 全1矩阵
print(arr10)
[[0. 0. 0.]
 [0. 0. 0.]]
[[1. 0. 0. 0.]
 [0. 1. 0. 0.]
 [0. 0. 1. 0.]
 [0. 0. 0. 1.]]
[[2 0 0 0]
 [0 3 0 0]
 [0 0 4 0]
 [0 0 0 6]]
[[1. 1. 1. 1.]
 [1. 1. 1. 1.]
 [1. 1. 1. 1.]]

11、生成随机数

import random

print(random.random())  # 随机生成0-1之间的一个数
print(random.randint(2, 4))  # 随机生成2-4(含)之间的一个数
print(random.choice(["a", "b", "c"]))

print(np.random.random(10))
print(np.random.rand(2, 3, 4))
print(np.random.randn(2, 3))
print(np.random.randint(2, 5, size=(3, 4)))  # 不包含上限
print(np.random.choice(["a", "b", "c"], 2, replace=False))  # replace=False ,不放回随机取
0.2901015268998839
4
c
[0.42173402 0.704976   0.59077395 0.75296426 0.42705292 0.94097519
 0.45795971 0.3592067  0.97336565 0.59920003]
[[[0.7065555  0.06316032 0.50742253 0.24976952]
  [0.17416443 0.92715352 0.00334854 0.75149703]
  [0.9538456  0.84476862 0.95255708 0.70714702]]

 [[0.79395875 0.9714903  0.28513388 0.41298319]
  [0.86979584 0.89509482 0.38986048 0.75104968]
  [0.67466791 0.4672155  0.39372941 0.07380121]]]
[[ 0.32389886 -1.41339375 -0.85613552]
 [ 0.73887919  0.20162813  1.76233156]]
[[4 2 4 3]
 [3 2 2 4]
 [4 3 2 4]]
['b' 'c']

12、一维数组的索引和切片

a1 = np.arange(10)
print(a1)

print(a1[4])
print(a1[4:8])
print(type(a1[4:8]))

print(a1[-1])
print(a1[::-2]) # 倒着来取,且步长为 2
print(a1[:])
[0 1 2 3 4 5 6 7 8 9]
4
[4 5 6 7]
<class 'numpy.ndarray'>
9
[9 7 5 3 1]
[0 1 2 3 4 5 6 7 8 9]

13、多维数组的索引和切片★

arr = np.array([[1, 2, 3, 4, 5],
                [4, 5, 6, 7, 8],
                [7, 8, 9, 10, 11]])
# 索引的两种方式
print(arr[0][1])

print(arr[1, 2])

# 切片
print(arr[1][1:3])
print(arr[1, 1:3])

print(arr[1:3, 2:4])
print(arr[1:, 1:])
print(arr[1:3, 2:4])
2
6
[5 6]
[5 6]
[[ 6  7]
 [ 9 10]]
[[ 5  6  7  8]
 [ 8  9 10 11]]

14、拉伸数组的形状

print(a3.ravel())
print(a3.flatten("C"))
print(a3.flatten("F"))
[ 0  1  2  3  4  5  6  7  8  9 10 11]
[ 0  1  2  3  4  5  6  7  8  9 10 11]
[ 0  4  8  1  5  9  2  6 10  3  7 11]

15、数组的拼接与分割

           拼接 

arr1 = np.arange(1, 7).reshape((3, 2))
arr2 = np.arange(11, 17).reshape((3, 2))
print(arr1)
print(arr2)

print(np.hstack((arr1, arr2)))
print(np.vstack((arr1, arr2)))

print(np.concatenate((arr1, arr2), axis=1))
print(np.concatenate((arr1, arr2), axis=0))

[[1 2]
 [3 4]
 [5 6]]
[[11 12]
 [13 14]
 [15 16]]
[[ 1  2 11 12]
 [ 3  4 13 14]
 [ 5  6 15 16]]
[[ 1  2]
 [ 3  4]
 [ 5  6]
 [11 12]
 [13 14]
 [15 16]]
[[ 1  2 11 12]
 [ 3  4 13 14]
 [ 5  6 15 16]]
[[ 1  2]
 [ 3  4]
 [ 5  6]
 [11 12]
 [13 14]
 [15 16]]

           分割

arr11 = np.arange(8).reshape((2, 4))
print(arr11)

print(np.hsplit(arr11, 2))
print(np.vsplit(arr11, 2))

print(np.split(arr11, 2, axis=1))
print(np.split(arr11, 2, axis=0))
[[0 1 2 3]
 [4 5 6 7]]
[array([[0, 1],
       [4, 5]]), array([[2, 3],
       [6, 7]])]
[array([[0, 1, 2, 3]]), array([[4, 5, 6, 7]])]
[array([[0, 1],
       [4, 5]]), array([[2, 3],
       [6, 7]])]
[array([[0, 1, 2, 3]]), array([[4, 5, 6, 7]])]

16、np.any 、np.all

arr12 = np.array([True, True, False])
arr13 = np.array([True, True, True])
arr14 = np.array([False, False, False])

print(np.any(arr12))
print(np.any(arr14))

print(np.all(arr12))
print(np.all(arr13))
True
False
False
True

17、广播★

arr15 = np.arange(15).reshape((5, 3))
print(arr15)

arr16 = np.array([1, 2, 3])
print(arr15 + arr16)

arr17 = np.array([1, 2, 3])
print(arr15 + arr17)

[[ 0  1  2]
 [ 3  4  5]
 [ 6  7  8]
 [ 9 10 11]
 [12 13 14]]
[[ 1  3  5]
 [ 4  6  8]
 [ 7  9 11]
 [10 12 14]
 [13 15 17]]
[[ 1  3  5]
 [ 4  6  8]
 [ 7  9 11]
 [10 12 14]
 [13 15 17]]

18、排序

arr21 = np.array([4, 3, 2])

print(sorted(arr21))  # 返回临时排序的列表【python内置方法】
print(arr21)  # 原数组


# numpy 方法
print(arr21.argsort())  # 排序后的初始下标
arr21.sort()  # 不返回值,只进行排序操作
print(arr21)  # 排序后数组

19、np.multiply()、np.dot()和星号(*)三种乘法运算的区别★

        np.multiply 与 *   数乘操作

        np.dot() 矩阵乘法

20、几个重要的函数

# 几个重要函数
arr22 = np.array([3, 4, 2, 1, 1, 3, 2, 4])

print(np.unique(arr22))  # 去重
print(np.tile(arr21, 5))  # 延伸
print(np.repeat(arr21, [3, 2, 1]))  # 重复

arr23 = np.arange(6).reshape((2, 3))
print(arr23)
print(np.repeat(arr23, 2, axis=1))
print(np.repeat(arr23, 2, axis=0))

print(np.tile(arr23, 2))
print(np.tile(arr23, 2))
print(arr23.sum(axis=0))
print(arr23.mean())
print(arr23.std())
print(arr23.var())
print(arr23.argmax(axis=0))   # 取某一轴的最大值得下标
print(arr23.argmin(axis=1))
print(arr23.cumsum())

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值