Numpy的ndarray

来源:互联网 发布:java如何做好后端 编辑:程序博客网 时间:2024/05/16 13:43

1)ndarray是N维数组对象,其中所有的元素必须是相同类型,可以对整块数据进行一些数学运算

      

import numpy as npa = [1, 2, 3]b = 3*ac = np.array(a)*3print(b)print(c)print(c+c)


[1, 2, 3, 1, 2, 3, 1, 2, 3]
[3 6 9]
[ 6 12 18]


2)arange是python内置函数range的数组版

 print(np.arange(15)) # [ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14]是数组,不是list


3) 数组切片与列表切片

 

a = [1, 2, 3]b = a[:2]b[0] = 10print(a)c = np.array(a)c1 = c[:2]c1[0] = 10print(c)a[:2] = [10, 2]print(a)

[1, 2, 3]
[10  2  3]
[10, 2, 3]


通过上面的例子,可以知道ndarray切片的是视图,视图上的任何修改都会直接反映到源数组

如果想得到的不是视图,就必须进行显式操作,c1 = c[:2].copy()


4)数组索引

    a[0][2] 与a[0, 2]是等价的


5)ndarray的astype方法显式地转换其dtype

  调用astype无论如何都会创建一个新的数组,即使新dtyoe跟老dtype相同也如此

import numpy as npa = np.array([3.7, -1.2, 2.6])print(a)a.astype(np.int)print(a)b = a.astype(np.int)print(b)

[ 3.7 -1.2  2.6]
[ 3.7 -1.2  2.6]
[ 3 -1  2]


6)数组转置

import numpy as nparr = np.arange(15).reshape((3,5))print(arr)b = arr.Tprint(b)
print(np.dot(arr,arr.T))#求矩阵内积

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


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


[[ 30  80 130]
 [ 80 255 430]
 [130 430 730]]


7)通用函数

#快速元素级函数import numpy as nparr = np.arange(10)print(np.sqrt(arr))#一元函数,求根x = np.random.randn(8)y = np.random.randn(8)print(x)print(y)print(np.maximum(x,y))#二元函数,求对应的较大值


[ 0.          1.          1.41421356  1.73205081  2.          2.23606798
  2.44948974  2.64575131  2.82842712  3.        ]
[-0.30646481  0.19637636 -0.24780102 -1.56935591 -0.52543323 -1.5038108
  0.80716262 -1.16165569]
[-1.07482357  1.31523092  1.46381034 -0.82602134 -0.13589412  0.81393135
  0.94287863 -0.49948303]
[-0.30646481  1.31523092  1.46381034 -0.82602134 -0.13589412  0.81393135
  0.94287863 -0.49948303]





0 0
原创粉丝点击