1. numpy概述(1)Numerical Python,数值的Python,补充了Python语言所欠缺的数值计算能力(2)是其他数据分析及机器学习库的底层库(3)完全标准C语言实现,运行效率充分优化(4)开源免费2. numpy的核心:多维数组1.代码简洁2. 底层实现3. numpy基础(1)ndarray数组(2)内存中的ndarray对象元数据实际数据(3)ndarray数组对象的特点(4)ndarray数组对象的创建1.np.array(任何可被解释为numpy数组的逻辑结构)2.np.arange(起始值(0),终止值,步长(1))3.np.zeros(数组元素个数,dtype='类型')4.np.ones(数组元素个数,dtype='类型')5.np.zeros_like() 6.np.ones_like()4. ndarray对象属性的基本操作(1)数组的维度np.ndarray.shape1.维度基础操作(2)元素的类型:np.ndarray.dtype(3)数组元素的个数:np.ndarray.size(4)数组元素索引(下标)5.ndarray对象属性操作详解(1)numpy的内部基本数据类型(2)自定义复合类型

1. numpy概述

(1)Numerical Python,数值的Python,补充了Python语言所欠缺的数值计算能力

(2)是其他数据分析及机器学习库的底层库

(3)完全标准C语言实现,运行效率充分优化

(4)开源免费

2. numpy的核心:多维数组

1.代码简洁

减少python代码中的循环

2. 底层实现

厚内核(C)+薄接口(Python),保证性能

3. numpy基础

(1)ndarray数组

用np.ndarray类的对象表示n维数组

import numpy as np
ary=np.array([1,2,3,4,5,6])
print(ary,type(ary))
print(ary.shape)
ary.shape=(2,3)
print(ary,ary.shape)
ary.shape=(6,)
print(ary)
print(ary*3)##每个都乘3
[1 2 3 4 5 6] <class 'numpy.ndarray'>
(6,)
[[1 2 3]
 [4 5 6]] (2, 3)
[1 2 3 4 5 6]
[ 3  6  9 12 15 18]

(2)内存中的ndarray对象

元数据

存储对目标数组的描述信息,如:dim count\dimensions\dtype\data等

实际数据

完整的数组数据

将实际数据与元数据分开存放,一方面提高了内存空间的使用效率,一方面减少对实际数据的访问频率,提高性能

(3)ndarray数组对象的特点

1.numpy数组是同质数组,所有元素的数据类型必须相同

2.下标从0开始

(4)ndarray数组对象的创建

1.np.array(任何可被解释为numpy数组的逻辑结构)

import numpy as np
a=np.array([1,2,3,4,5,6])
print(a)

2.np.arange(起始值(0),终止值,步长(1))

import numpy as np
a=np.arange(2,9,1)
print(a)

3.np.zeros(数组元素个数,dtype='类型')

4.np.ones(数组元素个数,dtype='类型')

5.np.zeros_like()

6.np.ones_like()

4. ndarray对象属性的基本操作

(1)数组的维度np.ndarray.shape

1.维度基础操作

import numpy as np
a=np.arange(1,9)
print(a,a.shape)
#改变维度
a.shape=(2,4)
print(a,a.shape)
​
[1 2 3 4 5 6 7 8] (8,)
[[1 2 3 4]
 [5 6 7 8]] (2, 4)

(2)元素的类型:np.ndarray.dtype

import numpy as np
a=np.array([1,2,3,4,5,6])
#转换ary元素的类型
b=a.astype(float)
print(type(b),b,b.dtype)
​
<class 'numpy.ndarray'> [1. 2. 3. 4. 5. 6.] float64
​
print(a.dtype)
#错误的修改数据类型方式
a.dtype='float32'
print(a,a.dtype)
int64
[[1.4e-45 0.0e+00 2.8e-45 0.0e+00 4.2e-45 0.0e+00 5.6e-45 0.0e+00]
 [7.0e-45 0.0e+00 8.4e-45 0.0e+00 9.8e-45 0.0e+00 1.1e-44 0.0e+00]] float32
​
b=a.astype('float32')#要赋值给新的变量接收
print(b,b.dtype)
[[1.4e-45 0.0e+00 2.8e-45 0.0e+00 4.2e-45 0.0e+00 5.6e-45 0.0e+00]
 [7.0e-45 0.0e+00 8.4e-45 0.0e+00 9.8e-45 0.0e+00 1.1e-44 0.0e+00]] float32

(3)数组元素的个数:np.ndarray.size

print(b.size,len(b))#len是最外层有多少个
16 2

(4)数组元素索引(下标)

c=np.arange(1,19)
c.shape=(3,2,3)
print(c)
#两种写法
print(c[0][1][0])
print(c[0,1,0])
#开头有几个中括号就是几维
[[[ 1  2  3]
  [ 4  5  6]]
​
 [[ 7  8  9]
  [10 11 12]]
​
 [[13 14 15]
  [16 17 18]]]
4
4
​
#通过索引把所有元素遍历出来
for i in range(c.shape[0]):#shape返回的是元组
    for j in range(c.shape[1]):
        for k in range(c.shape[2]):
            print(c[i,j,k])
            
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
•

5.ndarray对象属性操作详解

(1)numpy的内部基本数据类型

12-05 07:16