NumPy_1

Posted bigstrawberrywakaka

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NumPy_1相关的知识,希望对你有一定的参考价值。

numpy

numpy是针对python一个扩充程序库,支持高级大量的维度数组和矩阵运算,此外也针对数组运算提供大量的数学函数库。

ndarray(N维数组对象)是一个其中所有元素类型必须相同的多维容器,每个数组有一个shape(代表各维度大小的元组)和一个dtype(一个用于说明数组类型的对象).

 1 import numpy as np
 2 #创建ndarray
 3 data1 = [6, 1.2, 3, 0, -1]
 4 array1 = np.array(data1)
 5 print(array1)
 6 #嵌套序列,如列表将会被转化成一个多维数组
 7 data2 = [[1, 2, 3, 4],[5, 6, 7, 8]]
 8 array2 = np.array(data2) 
 9 print(array2)
10 print(array2.ndim)
11 print(array2.shape)
12 print(array1.dtype)
13 print(array2.dtype)
14 #利用函数新建数组
15 array3 = np.zeros(10)
16 print(array3)
17 array4 = np.zeros((3, 6))
18 print(array4)
19 array5 = np.empty((2, 3, 2))
20 #返回0数组不安全,返回的都是垃圾值
21 print(array5)
22 #arange函数类似range函数
23 array6 = np.arange(15)
24 print(array6)

ndarray数据类型

dtype可以直接映射到相应的机器表示

利用ndarray的astype()显示转换其dtype:

 1 import numpy as np
 2 #int64转float64
 3 arr = np.array([1, 2, 3, 4, 5])
 4 print(arr.dtype)
 5 float_arr = arr.astype(np.float64)
 6 print(float_arr.dtype)
 7 #float64转int32,小数被截断
 8 arr2 = np.array([1.1, 2.2, 3.3, 4.4, 5.5])
 9 print(arr2.dtype)
10 int_arr2 = arr.astype(np.int32)
11 print(int_arr2)
12 #字符串数组转换为数值形式
13 arr3 = np.array([1.1,-2.2,3.4],dtype = np.string_)
14 float_arr3 = arr3.astype(float)
15 print(float_arr3)
16 #dtype的另外一个用法
17 int_array = np.arange(10)
18 calibers = np.array([.22, .270, .357, .380, .44, .50], dtype=np.float64)
19 print(int_array.astype(calibers.dtype))

基本的索引和切片:

跟列表最大的区别是,数组切片是原始数组的视图,这也就是说视图上的任何修改都会直接反映到原数组上。

1 import numpy as np
2 arr = np.arange(10)
3 arr[5:8] = 1
4 print(arr)
5 arr_slice = arr[5:8]
6 arr_slice[1] = 3
7 print(arr)

可以看到arr_slice[5:8]改变,arr也随之改变

注意:如果你实在想要ndarray切片的副本而不是视图,必须进行显式复制,arr[5:8].copy()。

如果你实在想要ndarray切片的副本而不是视图,必须进行显式复制,arr[5:8].copy()。

切片索引:

高维度切片索引就不是列表那么玩儿了

ndarray是沿着一个轴向切片选取元素的。

1 import numpy as np
2 arr2d = np.array([[1,2,3],[4,5,6],[7,8,9]])
3 print(arr2d[:2])
4 #传入多个切片
5 print(arr2d[:2, 1:])
6 #将整数索引和切片混合,得到低维度的切片
7 print(arr2d[1, :2])
8 #只有冒号表示选取整个轴
9 print(arr2d[:, :1])

运行结果:

[[1 2 3]
 [4 5 6]]
[[2 3]
 [5 6]]
[4 5]
[[1]
 [4]
 [7]]
[Finished in 0.3s]

布尔值索引:

1 import numpy as np
2 names = np.array([小明,小红,小杜,小雪,小刚,小狗,小杜])
3 #numpy.random中的randn函数生成正态分布的随机数据
4 data = np.random.randn(7,4)
5 print(names)
6 print(data)
7 print( names == 小杜)
8 #布尔型数组索引
9 print(data[names == 小杜])

未完待续。。。

以上是关于NumPy_1的主要内容,如果未能解决你的问题,请参考以下文章

如何创建片段以重复变量编号中的代码行

VSCode 配置 用户自定义代码片段 自定义自动代码补充

这些 C++ 代码片段有啥作用?

'numpy.ndarray':对象不可调用错误

多处理 numpy 未定义错误

[Python]numpy数据分析练习[1~20]]