Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何从现有Numpy数组创建Numpy数组_Python_Arrays_Numpy_Scipy - Fatal编程技术网

Python 如何从现有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

我希望获取一个现有的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])
只要这样做:

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])