Python 以与内置阵列兼容的方式扩展numpy阵列

Python 以与内置阵列兼容的方式扩展numpy阵列,python,numpy,Python,Numpy,我试图编写的代码不依赖于用户是使用np.array还是内置数组。我试图避免检查对象类型等。唯一的问题是扩展数组。例如,如果我有两个Python数组,a和b,要将第一个数组扩展到第二个数组,我可以执行a=a+b,或者a.extend(b)。另一方面,如果a是一个numpy数组,我需要使用np.append或其他方法 是否有一种独立于np数组还是Python数组的快速扩展方法 即使您的函数在输入上是灵活的,您的输出也应该是特定类型的。因此,我将转换为所需的输出类型 例如,如果我的函数正在使用nump

我试图编写的代码不依赖于用户是使用
np.array
还是内置数组。我试图避免检查对象类型等。唯一的问题是扩展数组。例如,如果我有两个Python数组,
a
b
,要将第一个数组扩展到第二个数组,我可以执行
a=a+b
,或者
a.extend(b)
。另一方面,如果
a
是一个numpy数组,我需要使用
np.append
或其他方法


是否有一种独立于
np
数组还是Python数组的快速扩展方法

即使您的函数在输入上是灵活的,您的输出也应该是特定类型的。因此,我将转换为所需的输出类型

例如,如果我的函数正在使用
numpy.array
并返回一个
numpy.array
,但是我想允许
list
s也被输入,那么我要做的第一件事就是将
list
s转换为
numpy.array
s

像这样:

def my_func(a, b):
    a = np.asarray(a)
    b = np.asarray(b)
    # do my stuff here
NumPy的append()也适用于列表

>>> np.append([1,2,3], [1,2,3])
array([1, 2, 3, 1, 2, 3])
如果要自动使结果与输入的类型相同,请尝试以下操作:

mytype = type(a)
arr = np.append(a, b)
result = mytype(arr)

什么是内置阵列?你是说列表吗?@JohnZwinck:是的,很抱歉给你添麻烦。@Zhenya,是的,这样更好,它更通用,例如,它处理所有的可编辑项,而不仅仅是列表,而且更短。谢谢。我不在乎具体的类型。。。只要它是一个宜人的。但作为输入,我希望使用Python列表或nparray,因此这非常有效。谢谢