一.numpy①

一.numpy①

文章中所有的都是在ipython环境下
文章中的np是因为import numpy as np

1.ndarray对象可以对数组的整块数据执行数学运算。

data
array([[ 0.9321, -0.321 , -0.3432],
       [ 0.5451,  0.2546,  0.9564]])
data*10
array([[ 9.321, -3.21 , -3.432],
       [ 5.451,  2.546,  9.564]])

ndarray是一个同构数据的多维容器,其实就是里面所有的元素都必须市同种类型。ndarray有两个属性shape(它是一个表示维度大小的元祖)、dtype(它是表示数据的类型的)

In [22]: arr3.shape
Out[22]: (2, 3)

In [23]: arr3.dtype
Out[23]: dtype('float64')

2.创建ndarray

使用array创建
import numpy
data1=[6,7.5,8,0,1]
arr1=np.array(data1)
arr1
array([6.,7.5,8.,0.,1.])
使用zeros创建
In [25]: np.zeros(10)
Out[25]: array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])

In [26]: np.zeros((3,8))
Out[26]:
array([[0., 0., 0., 0., 0., 0., 0., 0.],
       [0., 0., 0., 0., 0., 0., 0., 0.],
       [0., 0., 0., 0., 0., 0., 0., 0.]])

zeros创建的是一个指定长度和形状的全为0的数组。

使用ones创建
In [27]: np.ones(10)
Out[27]: array([1., 1., 1., 1., 1., 1., 1., 1., 1., 1.])

In [28]: np.ones((3,8))
Out[28]:
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.]])

ones创建的是一个指定长度和形状的全为1的数组。

总结使用ones和zeros创建的方法相似。

使用empty创建
In [33]: np.empty((2,3,2))
Out[33]:
array([[[0., 0.],
        [0., 0.],
        [0., 0.]],

       [[0., 0.],
        [0., 0.],
        [0., 0.]]])

创建方法和前面两种相同,他是创建一个没有具体值的数组。不过我试了几次之都是“0.”,可能是我初学没懂其中的意义。

可以结合python的函数arange创建
In [34]: np.arange(10)
Out[34]: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
其中在没有特别指出数据类型的情况下,创建的数据类型都是float(64)
In [35]: data5=np.array([1,2,3],dtype=np.float64)

In [36]: data6=np.array([1,2,3],dtype=np.int32)

In [37]: data5
Out[37]: array([1., 2., 3.])

In [38]: data6
Out[38]: array([1, 2, 3])

可以通过astype将数据类型转换过来

In [39]: data5
Out[39]: array([1., 2., 3.])

In [40]: data7=data5.astype(np.float64)

In [41]: data7
Out[41]: array([1., 2., 3.])

ndarray可以切片

In [42]: np.arange(10)
Out[42]: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

In [43]: data10=np.arange(10)

In [44]: data10[5]
Out[44]: 5

In [45]: data10[5:8]
Out[45]: array([5, 6, 7])

In [46]: data10[5:8]=12

In [47]: data10
Out[47]: array([ 0,  1,  2,  3,  4, 12, 12, 12,  8,  9])

In [48]: data11=data10[5:8]

In [49]: data11[1]=11111

In [50]: data10
Out[50]:
array([    0,     1,     2,     3,     4,    12, 11111,    12,     8,
           9])

In [51]: data11[:]=22222

In [52]: data10
Out[52]:
array([    0,     1,     2,     3,     4, 22222, 22222, 22222,     8,
           9])

其中你给一个切片赋值,他会自动传递个原数组。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值