Python 如何从现有Numpy数组创建Numpy数组
我希望获取一个现有的numpy数组,并从现有数组创建一个新数组,但从现有数组的值开始和结束 例如:Python 如何从现有Numpy数组创建Numpy数组,python,arrays,numpy,scipy,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]) 只要这样做: a
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])
只要这样做:
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()
进行浅拷贝。
浅层副本构造一个新的复合对象,然后(尽可能)在其中插入对原始副本中找到的对象的引用
i、 e
您可以使用deepcopy()
进行深度复制。
深度副本构造一个新的复合对象,然后递归地将在原始副本中找到的对象的副本插入其中
i、 e
进一步参考:
您需要对阵列进行切片和复制。首先,@AniMenon提到的切片可以通过殖民化索引实现 接下来,您可以选择使用内置的.copy()或导入copy并使用copy.copy()
无论哪种方式,这都是避免以后意外互连的重要一步。
arr[3:8]
或arr[3:8]。如果您想要副本,而不是视图,则复制()
。deepcopy
与列表有关,但与numpy
数组无关。是的,列表特别重要。把它都挂起来作为参考copy()
是问题的解决方案。从技术上讲,arr1
是一个新数组(具有自己的形状和id
),但它与arr
共享底层数据缓冲区。但是arr1=arr[[3,4,5]]
将是完整副本。从长远来看,理解numpy
视图
和副本
之间的区别很重要。
>>> arr1=arr[3:8].copy()
>>> arr1
array([4, 5, 6, 7, 8])
>>> arr2 = deepcopy(arr[3:8])
>>> lst2
array([4, 5, 6, 7, 8])