numpy 光速入门示例

基于notebook

光速入门示例

In [1]:

import numpy as np  # 导入

In [2]:

a = np.arange(15).reshape(3, 5)  # 创建矩阵并改变形状
a

Out[2]:

array([[ 0,  1,  2,  3,  4],
       [ 5,  6,  7,  8,  9],
       [10, 11, 12, 13, 14]])

In [3]:

a.shape  # 形状

Out[3]:

(3, 5)

In [4]:

a.ndim  # 轴数

Out[4]:

2

In [5]:

a.dtype  # 类型

Out[5]:

dtype('int32')

In [6]:

a.dtype.name

Out[6]:

'int32'

In [7]:

a.size  # 总数

Out[7]:

15

In [8]:

a.itemsize  # 每个元素的大小(以字节为单位)

Out[8]:

4

In [9]:

a.data  # 缓冲区

Out[9]:

<memory at 0x0000011D14E14BA8>

In [10]:

type(a)

Out[10]:

numpy.ndarray

矩阵创建

In [11]:

a = np.array([2,3,4])  # int64
b = np.array([1.2, 3.5, 5.1])  # float64

In [12]:

b = np.array([(1,2,3), (4,5,6)])  # 列表转换数组
b

Out[12]:

array([[1, 2, 3],
       [4, 5, 6]])

In [13]:

c = np.array( [ [1,2], [3,4] ], dtype=complex )  # 指定类型
c

Out[13]:

array([[1.+0.j, 2.+0.j],
       [3.+0.j, 4.+0.j]])

In [14]:

np.zeros( (3,4) )

Out[14]:

array([[0., 0., 0., 0.],
       [0., 0., 0., 0.],
       [0., 0., 0., 0.]])

In [15]:

np.ones( (2,3,4), dtype=np.int16 )  # 指定数据类型

Out[15]:

array([[[1, 1, 1, 1],
        [1, 1, 1, 1],
        [1, 1, 1, 1]],

       [[1, 1, 1, 1],
        [1, 1, 1, 1],
        [1, 1, 1, 1]]], dtype=int16)

In [16]:

np.empty( (2,3) )  # 未初始化

Out[16]:

array([[0., 0., 0.],
       [0., 0., 0.]])

In [17]:

np.arange( 10, 30, 5 )

Out[17]:

array([10, 15, 20, 25])

In [18]:

np.arange( 0, 2, 0.3 )  # 浮点数

Out[18]:

array([0. , 0.3, 0.6, 0.9, 1.2, 1.5, 1.8])

In [19]:

np.linspace( 0, 2, 9 )  # 9 个数 范围 0 到 2

Out[19]:

array([0.  , 0.25, 0.5 , 0.75, 1.  , 1.25, 1.5 , 1.75, 2.  ])

In [20]:

import math
pi = math.pi
x = np.linspace( 0, 2*pi, 10 )  # 对于在很多点上求函数值很有用
x

Out[20]:

array([0.        , 0.6981317 , 1.3962634 , 2.0943951 , 2.7925268 ,
       3.4906585 , 4.1887902 , 4.88692191, 5.58505361, 6.28318531])

In [21]:

np.zeros_like(x)

Out[21]:

array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])

In [22]:

np.ones_like(x)

Out[22]:

array([1., 1., 1., 1., 1., 1., 1., 1., 1., 1.])

In [23]:

np.empty_like(np.arange(12).reshape(2,6))

Out[23]:

array([[ 858993459, 1070805811,  858993459, 1071854387, -858993460,
        1072483532],
       [ 858993459, 1072902963,          0, 1073217536, -858993460,
        1073532108]])

In [24]:

#扩展 不做要求
np.fromfunction(lambda i, j: i == j, (2, 2), dtype=int)
# numpy.fromfile(file,dtype = float,count = -1,sep ='',offset = 0 )  文件读取 了解即可

Out[24]:

array([[ True, False],
       [False,  True]])

矩阵输出

In [25]:

np.arange(6)  # 最后一个轴从左到右打印

Out[25]:

array([0, 1, 2, 3, 4, 5])

In [26]:

np.arange(12).reshape(4,3)  # 倒数第二个从上到下打印

Out[26]:

array([[ 0,  1,  2],
       [ 3,  4,  5],
       [ 6,  7,  8],
       [ 9, 10, 11]])

In [27]:

np.arange(24).reshape(2,3,4)  # 其余的也从上到下打印,每个切片之间用空行隔开

Out[27]:

array([[[ 0,  1,  2,  3],
        [ 4,  5,  6,  7],
        [ 8,  9, 10, 11]],

       [[12, 13, 14, 15],
        [16, 17, 18, 19],
        [20, 21, 22, 23]]])

In [28]:

np.arange(10000)  # 省略太大的数据显示

Out[28]:

array([   0,    1,    2, ..., 9997, 9998, 9999])

In [29]:

print(np.arange(10000).reshape(100,100))
[[   0    1    2 ...   97   98   99]
 [ 100  101  102 ...  197  198  199]
 [ 200  201  202 ...  297  298  299]
 ...
 [9700 9701 9702 ... 9797 9798 9799]
 [9800 9801 9802 ... 9897 9898 9899]
 [9900 9901 9902 ... 9997 9998 9999]]

In [30]:

# np.set_printoptions(threshold=sys.maxsize)  # 强制输出所有数据

运算

In [31]:

a = np.array( [20,30,40,50] )
b = np.arange( 4 )  #  array([0, 1, 2, 3])
a-b

Out[31]:

array([20, 29, 38, 47])

In [32]:

b**2

Out[32]:

array([0, 1, 4, 9], dtype=int32)

In [33]:

10*np.sin(a)

Out[33]:

array([ 9.12945251, -9.88031624,  7.4511316 , -2.62374854])

In [34]:

a<35  # a = np.array( [20,30,40,50] )

Out[34]:

array([ True,  True, False, False])

In [35]:

# 乘积运算符*在NumPy数组中按元素进行操作。可以使用@运算符(python>= 3.5)或dot函数或方法执行矩阵乘积:

In [36]:

A = np.array( [[1,1],
               [0,1]] )

In [37]:

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

In [38]:

A * B

Out[38]:

array([[2, 0],
       [0, 4]])

In [39]:

A @ B

Out[39]:

array([[5, 4],
       [3, 4]])

In [40]:

A.dot(B)

Out[40]:

array([[5, 4],
       [3, 4]])

In [41]:

a = np.ones((2,3), dtype=int)
a

Out[41]:

array([[1, 1, 1],
       [1, 1, 1]])

In [42]:

a *= 3
a

Out[42]:

array([[3, 3, 3],
       [3, 3, 3]])

In [43]:

from numpy.random import default_rng
rg = default_rng()
b = rg.random((2,3))
b

Out[43]:

array([[0.27342757, 0.00260622, 0.45909137],
       [0.14484635, 0.87284694, 0.06241388]])

In [44]:

b += a
b

Out[44]:

array([[3.27342757, 3.00260622, 3.45909137],
       [3.14484635, 3.87284694, 3.06241388]])

In [45]:

# a += b  # 不会自动转换为整数类型
"""
运行报错如下
UFuncTypeError: Cannot cast ufunc 'add' output from dtype('float64') to dtype('int32') with casting rule 'same_kind'
"""

Out[45]:

"\n运行报错如下\nUFuncTypeError: Cannot cast ufunc 'add' output from dtype('float64') to dtype('int32') with casting rule 'same_kind'\n"

In [46]:

a = np.ones(3, dtype=np.int32)
b = np.linspace(0,pi,3)
b.dtype.name

Out[46]:

'float64'

In [47]:

c = a+b
c

Out[47]:

array([1.        , 2.57079633, 4.14159265])

In [48]:

c.dtype.na
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值