单括号和双括号Numpy数组有什么区别?

7
import numpy as np
a=np.random.randn(1, 2)
b=np.zeros((1,2))
print("Data type of A: ",type(a))
print("Data type of A: ",type(b))

输出:

Data type of A:  <class 'numpy.ndarray'>
Data type of A:  <class 'numpy.ndarray'>

在np.zeros()中,我们在2个括号中给出输入来声明一个数组,而在np.random.radn()中,我们在1个括号中给出输入?
这种语法有没有特别的原因,因为它们都是相同的数据类型,但是遵循不同的语法?

这与最近一个关于为什么np.reshape需要形状元组,而x.reshape(...)接受扩展元组(2,3)((2,3))的问题类似。https://stackoverflow.com/questions/46508340/passing-new-shape-to-np-reshape - hpaulj
1个回答

8
为了方便 Matlab 用户转换到 NumPy,一些便利函数(如randn)被构建成与其 Matlab 等效项具有相同的调用签名。
更多以 NumPy 为中心(而不是以 Matlab 为中心)的 NumPy 函数(例如np.zeros)期望size(或shape)是一个元组。这允许其他参数(如dtypeorder)也可以传递给该函数。而以 Matlab 为中心的函数则假定所有参数都是大小的一部分。 np.random.randn 是 NumPy 的一种以 Matlab 为中心的便利函数,模仿了 Matlab 的 randn。替代 np.random.randn 更以 NumPy 为中心的方法是 np.random.standard_normal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接