如何从现有的Numpy阵列创建Numpy数组

时间:2016-05-07 06:11:02

标签: python arrays numpy scipy

我希望获取现有的numpy数组并从现有数组创建一个新数组,但是从现有数组的值开始和结束?

例如:

arr = np.array([1,2,3,4,5,6,7,8,9,10])

def split(array):
    # I am only interested in 4 thru 8 in original array
    return new_array

>>>new_array
>>> array([4,5,6,7,8])

2 个答案:

答案 0 :(得分:1)

这样做:

arr1=arr[x:y]

其中,

x - >开始索引

y - >结束指数

示例:

>>> import numpy as np
>>> arr = np.array([1,2,3,4,5,6,7,8,9,10])
>>> arr
array([ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10])
>>> arr1=arr[3:8]
>>> arr1
array([4, 5, 6, 7, 8])

在上面的例子中,我们使用赋值,Python中的赋值语句不复制对象,它们在目标和对象之间创建绑定。

您可以使用.copy()进行浅层复制。

浅拷贝构造一个新的复合对象,然后(尽可能)将对它的引用插入到原始对象中找到的对象。

>>> arr1=arr[3:8].copy()
>>> arr1
array([4, 5, 6, 7, 8])

您可以使用deepcopy()进行深层复制。

深层复制构造一个新的复合对象,然后递归地将复制品插入到原始对象中找到的对象。

>>> arr2 = deepcopy(arr[3:8])
>>> lst2
array([4, 5, 6, 7, 8])

进一步参考:

copy — Shallow and deep copy operations

Shallow and Deep Copy

答案 1 :(得分:0)

您需要切片并复制数组。首先,@ AniMenon提到的切片可以通过定殖索引实现。

接下来,您可以选择使用内置.copy()或导入副本并使用copy.copy()。

无论哪种方式,这都是以后避免意外互连的重要一步。