Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.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_Python 3.x_Numpy - Fatal编程技术网

Python 通过向另一个numpy数组追加一个数字来创建numpy数组

Python 通过向另一个numpy数组追加一个数字来创建numpy数组,python,arrays,python-3.x,numpy,Python,Arrays,Python 3.x,Numpy,这个看似简单的任务让我有点抓狂。 假设要通过将整数连接到另一个数组来创建数组: import numpy as np a = 4 b = np.array([1, 10, 24, 12]) A = np.array(a, b) 给我类型错误:数据类型不理解。我理解这一点,因为我把一个整数和一个列表混合在一起。现在如果我做A=np.array[A],b我会得到相同的结果,如果我得到A=np.array[A]+b,我不会得到预期的结果。 此外,我还尝试了A=np.array[A,*b]和Synt

这个看似简单的任务让我有点抓狂。 假设要通过将整数连接到另一个数组来创建数组:

import numpy as np

a = 4
b = np.array([1, 10, 24, 12])
A = np.array(a, b)
给我类型错误:数据类型不理解。我理解这一点,因为我把一个整数和一个列表混合在一起。现在如果我做A=np.array[A],b我会得到相同的结果,如果我得到A=np.array[A]+b,我不会得到预期的结果。 此外,我还尝试了A=np.array[A,*b]和SyntaxError:只能将带星号的表达式用作赋值目标。
如何正确执行此操作?

您可以使用连接函数执行此操作

A = np.concatenate(([a], b))

对于您的情况,我认为使用append更好,因为它不太容易出错,因为它也接受标量,我自己的错误清楚地表明了这一点!而且可以说可读性稍高。

您可以使用concatenate函数来实现这一点

A = np.concatenate(([a], b))
对于您的情况,我认为使用append更好,因为它不太容易出错,因为它也接受标量,我自己的错误清楚地表明了这一点!而且可以说更具可读性。

使用有什么不对

使用有什么问题吗?:

您也可以使用hstack:

hstack的优点是它可以连接任意多个数组/列表,例如np.hstack a、b、a、b、[0、2、4、6、8]

您也可以使用hstack:


hstack的优点是,它可以连接任意多个数组/列表,例如np.hstack a、b、a、b、[0、2、4、6、8]

这会生成ValueError:无法连接零维数组ValueError:无法连接零维数组。我忘记了[]使第一个变量成为列表而不是标量。另外,我认为append可能是一个更好的答案。但是,如果您有多个较小的数组,了解连接可能会很有用。@hpaulj,您认为哪种滥用可以通过例如连接来更好地解决?这会生成ValueError:零维数组不能连接ValueError:零维数组不能连接好。我忘记了[]使第一个变量成为列表而不是标量。另外,我认为append可能是一个更好的答案。但是,如果你有多个较小的数组,了解连接可能会很有用。@hpaulj,你在想什么样的滥用,例如连接可以更好地解决?我尝试了np.hstacka,b==np.appenda,b以确定结果是否相同,但它给了我一个有五个真的数组,即。,它显然只是比较了内容。对于np.hstacka,我得到了相同的五个Trues数组,b==[4,1,10,24,12],尽管结果是不同类型的。有没有办法完全比较hstack和append结果?@StefanPochmann这是numpy数组的正常行为。如果所有项都相等,则两个数组相等。要测试numpy数组的相等性,请使用all=>allnp.hstacka,b==np.appenda,b返回值True@StefanPochmann您还可以使用np.array_equal来确定两个数组是否相等。谢谢,不过当我与Python列表进行比较时,这两个数组都是真的。如果除了额外检查type/dtype/whatever.np之外,没有其他方法来真正检查它,那就相当令人失望了。allclosea,b是我比较数组的首选方法。它可以更好地处理浮动的情况。hstack和append都是用Python编写的,因此您可以研究代码。我尝试了np.hstacka,b==np.appenda,b来找出结果是否相同,但它给了我一个有五个true的数组,也就是说,它显然只比较了内容。对于np.hstacka,我得到了相同的五个Trues数组,b==[4,1,10,24,12],尽管结果是不同类型的。有没有办法完全比较hstack和append结果?@StefanPochmann这是numpy数组的正常行为。如果所有项都相等,则两个数组相等。要测试numpy数组的相等性,请使用all=>allnp.hstacka,b==np.appenda,b返回值True@StefanPochmann您还可以使用np.array_equal来确定两个数组是否相等。谢谢,不过当我与Python列表进行比较时,这两个数组都是真的。如果除了额外检查type/dtype/whatever.np之外,没有其他方法来真正检查它,那就相当令人失望了。allclosea,b是我比较数组的首选方法。它可以更好地处理浮动的情况。hstack和append都是用Python编写的,因此您可以研究代码。两者最终都使用编译后的连接。np.array的第一个参数是正在转换的对象列表。第二个参数是数据类型。b不是有效的数据类型。np.array的第一个参数是正在转换的对象列表。第二个参数是数据类型。b不是有效的数据类型。如果不清楚,append将返回一个新数组。它不会改变。这是使用连接的另一种方法。如果不清楚,append将返回一个新数组。它不会改变。这是使用连接的另一种方法。
In [194]: a = 4
In [195]: b = np.array([1, 10, 24, 12])
In [196]: np.hstack((a,b))
Out[196]: array([ 4,  1, 10, 24, 12])