i=np.arange(1,4,dtype=np.int)
a=np.arange(9).reshape(3,3)
和
a
>>>array([[0, 1, 2],
[3, 4, 5],
[6, 7, 8]])
a[:,0:1]
>>>array([[0],
[3],
[6]])
a[:,0:2]
>>>array([[0, 1],
[3, 4],
[6, 7]])
a[:,0:3]
>>>array([[0, 1, 2],
[3, 4, 5],
[6, 7, 8]])
现在我想对数组进行矢量化,以便将它们打印在一起。我尽量
a[:,0:i]
或
a[:,0:i[:,None]]
它给出了TypeError:只有整数标量数组才能转换为标量索引
这可能与这个特定的问题无关,但是我遇到了一个类似的问题,我在Python列表上使用NumPy索引,得到了相同的确切错误消息:
# incorrect
weights = list(range(1, 129)) + list(range(128, 0, -1))
mapped_image = weights[image[:, :, band]] # image.shape = [800, 600, 3]
# TypeError: only integer scalar arrays can be converted to a scalar index
事实证明,在应用多维NumPy索引之前,我需要将1D Python列表中的权重
转换为NumPy数组。下面的代码工作:
# correct
weights = np.array(list(range(1, 129)) + list(range(128, 0, -1)))
mapped_image = weights[image[:, :, band]] # image.shape = [800, 600, 3]
当我冒险使用numpy.concatenate来模拟2D向量的类似C的推回时,我遇到了这个问题;如果A和B是两个2Dnumpy.arrays,那么numpy.concatenate(A,B)会产生错误。
修复方法是简单地添加缺少的括号:numpy.concatenate((A,B)),这是必需的,因为要连接的数组构成一个参数
简短的回答:
[a[:,:j] for j in i]
您尝试执行的不是可矢量化的操作。Wikipedia将矢量化定义为单个数组上的批处理操作,而不是单个标量上的批处理操作:
在计算机科学中,数组编程语言(也称为向量或多维语言)概括了标量运算,以透明地应用于向量、矩阵和高维数组。
...
... 在整个阵列上运行的操作可以称为矢量化操作。。。
就CPU级优化而言,矢量化的定义为:
“矢量化”(简化)是重写循环的过程,因此它不需要对数组中的单个元素进行N次处理,而是(比如)同时对数组中的4个元素进行N/4次处理。
您案例中的问题是,每个单独操作的结果都有不同的形状:(3,1)
、(3,2)
和(3,3)
。它们不能形成单个矢量化操作的输出,因为输出必须是一个连续数组。当然,它可以包含(3,1)
、(3,2)
和(3,3)
数组(作为视图),但这就是原始数组a
的功能。
您真正想要的只是一个计算所有表达式的表达式:
[a[:,:j] for j in i]
... 但从性能优化的角度来看,它不是矢量化的。引擎盖下是一个简单的for
循环,它逐个计算每个项目。
我试着用pylot来模拟单摆。为此,我创建了类钟摆,在其中一个方法中,我不断得到相同的错误。 错误代码为: 文件“C:\Users\Lucas\Anaconda3\envs\Spyder\lib\site packages\numpy\core\fromnumeric.py”,第47行,在_wrapitresult=getattr(asarray(obj),method)中(*args,**kwd
我正在尝试一个来自github链接的tensorflow的简单演示代码 我目前正在使用python版本3.5。2 我在命令行中尝试board.py时遇到了这个错误。我已经安装了运行此操作所需的所有依赖项。
数据文件:pattern1.ktx 结果:TypeError:只能将整数标量数组转换为标量索引 看起来够简单?不过我不明白。如何解决这个问题?谢谢你。 这个怎么样? 同样的错误。如何修复?
我正在使用Python 3.6。3号巨蟒。我正在努力: 然后出现了这个错误: 只有整数标量数组可以转换为标量索引 我查看了地图: 所以我想我正确地使用了。只是不确定如何显示地图结果。
下面是代码: 我得到以下错误: 回溯(最后一次调用):文件“/Users/evgenypavlov/Documents/ml_tutorial_1/main.py”,第34行,在x_train=np中。重塑(x_列,(x_列.shape[0],x_列[1],1])文件“ 据我所知,我已经把它转换成np了。数组,那么什么会导致此问题以及如何解决它?
我为这个问题制作了两个数组的简单示例:是一个一维数组,索引处有标签,对应于nD数组的相同索引。我获取标签2出现的所有索引,并希望检索中的值。 因此,如果我想要标签2,我得到索引0和3,这应该给我相应数组中索引0和3的值。 但是当我想调用我的函数时,我收到一个TypeError@。 我的职能: