广告位联系
返回顶部
分享到

Numpy np.array()函数使用方法指南

python 来源:互联网 作者:佚名 发布时间:2022-12-25 16:37:40 人浏览
摘要

1、Numpy ndarray对象 numpy ndarray对象是一个n维数组对象,ndarray只能存储一系列相同元素。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 #一维数组 [1,2,3,4] #shape(4,) #二维数组 [[1,2,3,4]] #shape(1,4) [[1,2,3,4], [5,6,7,

1、Numpy ndarray对象

numpy ndarray对象是一个n维数组对象,ndarray只能存储一系列相同元素。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

#一维数组

[1,2,3,4]   #shape(4,)

 

#二维数组

[[1,2,3,4]] #shape(1,4)

 

[[1,2,3,4],

 [5,6,7,8]] #shape(2,4)

 

#三维数组

[

    [[1,2,3],[4,5,6]],

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

]   #shape(2,2,3)

2、创建numpy数组

numpy.array()使用说明:object是必须输入的参数,其余为可选参数。

1

2

3

4

5

6

7

8

import numpy as np

np.array(object,dtype,copy=True,order,ndmin,subok=Fasle)

#   object: 一个数组序列,例如[1,2,3,4]

#   dtype: 更改数组内的数据类型

#   copy: 数据源是ndarray时数组能否被复制,default=True

#   order: 选择数组的内存布局,C(行序列)|F(列序列)|A(默认)

#   ndmin: 数组维度

#   subok: bool类型,True,使用object的内部数据类型;False,使用object的数组的数据类型,default=Fasle

创建存储元素类型不同的数组:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

#int型

import numpy as np

a=np.array([1,2,3,4],dtype=int) #"dtype="可省略

print(a)

a.dtype

'''

输出:

[1 2 3 4]

dtype('int32')

'''

 

#float型

b=np.array([1,2,3,4],dtype=float)

print(b)

b.dtype

'''

输出:

[1. 2. 3. 4.]

dtype('float64')

'''

创建生成器:

1

2

3

4

5

6

7

8

9

a=np.array([i*10 for i in range(10)])

print(a)

b=np.array([i+2 for i in range(10)])

print(b)

'''

输出:

[ 0 10 20 30 40 50 60 70 80 90]

[ 2  3  4  5  6  7  8  9 10 11]

'''

当输入的object元素有不同类型时,将保留存储空间最大的类型:

1

2

3

4

5

6

7

8

9

10

11

12

x1=np.array([1,2,3,4,5.1])

print(x1)

x2=np.array([1,2,3,'a'])

print(x2)

x3=np.array([1,2.1,'a'])

print(x3)

'''

输出:

[1.  2.  3.  4.  5.1]

['1' '2' '3' 'a']

['1' '2.1' 'a']

'''

当多维数组元素个数不一致时:

1

2

3

4

5

6

7

8

9

10

x=np.array([[1,2,3],[1,2,3,4],[1,2,3,4,5]],dtype=object)    #存储长度不一致序列时,应有“dtype=object”,否则会报错

print(x)

print(x.shape)

print(x.ndim)   #输出数组的维度,2Darray强制转换成1Darray

'''

输出:

[list([1, 2, 3]) list([1, 2, 3, 4]) list([1, 2, 3, 4, 5])]

(3,)

1

'''

float强制转化int(向下取整):

1

2

3

4

5

6

7

8

9

a=np.array([1,2,3.1],int)

b=np.array([1,2,3.7],int)

print(a)

print(b)

'''

输出:

[1 2 3]

[1 2 3]

'''

用copy参数定义是否创建副本:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

#默认copy=True情况下,复制创建x1的副本为x2

x1=np.array([1,2,3])

x2=np.array(x1)

print('x1 ',id(x1),'x2',id(x2))

#更改x2的值,x1的值不会发生改变,反之,修改x1的值,x2也不会发生改变,因为二者地址不同

x2[2]=100

print('x1',x1)

print('x2',x2)

'''

输出:

x1  2055556179312 x2 2055300844976   x1 x2地址不同

x1 [1 2 3]

x2 [  1   2 100]

'''

 

#copy=Fasle情况下,复制创建x1的副本为x2

x1=np.array([1,2,3])

x2=np.array(x1,copy=False)

print('x1 ',id(x1),'x2',id(x2))

#更改x2的值,x1的值会发生改变,且x1永远等于x2,因为二者地址相同

x2[2]=100

print('x1',x1)

print('x2',x2)

'''

输出:

x1  2055300125584 x2 2055300125584   x1 x2地址相同

x1 [  1   2 100]

x2 [  1   2 100]

'''

 

#另一种创建副本方法:copy() 这种方法更常用

x1=np.array([1,2,3])

x2=x1.copy()

print('x1 ',id(x1),'x2',id(x2))

#更改x2的值,x1的值不会发生改变

x2[2]=100

print('x1',x1)

print('x2',x2)

'''

输出:

x1  2055556233040 x2 2055556062160

x1 [1 2 3]

x2 [  1   2 100]

'''

ps:如果直接用 x2=x1 的形式复制array,此时x1 x2 共用同一个地址

用ndmin改变数组维度(升维有效,降维无效):

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

a=np.array([1,2,3,4],ndmin=2)

print('a ',a)

b=np.array([[1,2],[1,2]],ndmin=3)

print('b ',b)

#2D降维成1D,但输出结果仍为2D

c=np.array([[1,2],[1,2]],ndmin=1)

print('c ',c)

'''

输出:

a  [[1 2 3 4]]

b  [[[1 2]

  [1 2]]]

c  [[1 2]

 [1 2]]

'''

用subok参数(bool值)确定数据类型:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

x1=np.mat([1,2,3])

a1=np.array(x1) #存储为原类型

b1=np.array(x1,subok=True)  #存储为数组类型

print('x1 ',type(x1),'a1 ',type(a1),'b1 ',type(b1))

 

#原始格式为list,无论subok为何值都转换成数组类型

x2=[[1,2],[1,2],[1]]

a2=np.array(x2,dtype=object) #存储为原类型

b2=np.array(x2,dtype=object,subok=True)  #存储为数组类型

print('x2 ',type(x2),'a2 ',type(a2),'b2 ',type(b2))

'''

输出:

x1  <class 'numpy.matrix'> a1  <class 'numpy.ndarray'> b1  <class 'numpy.matrix'>

x2  <class 'list'> a2  <class 'numpy.ndarray'> b2  <class 'numpy.ndarray'>

'''


版权声明 : 本文内容来源于互联网或用户自行发布贡献,该文观点仅代表原作者本人。本站仅提供信息存储空间服务和不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权, 违法违规的内容, 请发送邮件至2530232025#qq.cn(#换@)举报,一经查实,本站将立刻删除。
原文链接 : https://blog.csdn.net/weixin_47097527/article/details/127649907
相关文章
  • 本站所有内容来源于互联网或用户自行发布,本站仅提供信息存储空间服务,不拥有版权,不承担法律责任。如有侵犯您的权益,请您联系站长处理!
  • Copyright © 2017-2022 F11.CN All Rights Reserved. F11站长开发者网 版权所有 | 苏ICP备2022031554号-1 | 51LA统计