如何在`numpy`中正确使用别名?

时间:2016-09-25 13:17:22

标签: numpy

我是python的新手。找到一些东西让我感到困惑。

import numpy as np
a = np.arange(10)
b = a[3:6]
b[2] = 1000
print "a is "+ str(a)
print "b is "+ str(b)

输出是:

  

a是[0 1 2 3 4 1000 6 7 8 9]

     

b是[3 4 1000]

但在MATLABMathematica中,更改b不会影响列表a。

那么在numpy中设计别名的目的是什么? 它有一些优势吗?

1 个答案:

答案 0 :(得分:0)

  

那么在numpy中设计别名的目的是什么?它有一些优势吗?

有两个可能的优点:

  1. 节省空间:b只需要几十个字节,无论它在a中引用的切片有多大。想象一下,a的大小是1 GB,而b是其中的一半。
  2. 它可以进行就地修改。这恰恰是一种你可能认为不利(或惊喜)的优势。
  3. 请注意,NumPy是一种用于阵列和矩阵运算的低级设施;如果你试图像你的例子中那样修改一个切片,那么稍微高一级的Pandas库就会发出警告(特别是它会显示SettingWithCopyWarning。这个警告​​并不总是有用的 - 通常它会妨碍做什么我们想做。