小编jay*_*bee的帖子

numpy分配给切片,何时复制数组

因此,使用numpy数组将一个分配给另一个仅复制引用:即

import numpy as np
x = np.array([5,8])
y = x 
y += 1
x
Out: array([6, 9])
Run Code Online (Sandbox Code Playgroud)

如果我想复制一个深层副本,则应该使用x.copy()。当从更高维度的数组中获取视图时,也是如此,例如

A=np.array([[4,10],[8,1]])
b=A[:,1]
b+=1
A
Out: array([[ 4, 11],
            [ 8,  2]])
Run Code Online (Sandbox Code Playgroud)

反过来(从上面继续):

A[:,1]=b
b
Out: array([11,  2])
b+=1
A
Out: array([[ 4, 12],
            [ 8,  3]])
Run Code Online (Sandbox Code Playgroud)

因此,到目前为止,一切都一直在进行。但是现在如果我继续做下去:

A[:,0] = b
A
Out: array([[12, 12],
            [ 3,  3]])
b
Out: array([12,  3])
b+=1
A
Out: array([[12, 13],
            [ 3,  4]])
Run Code Online (Sandbox Code Playgroud)

我不明白的是为什么第一列保持不变,而另一列却保持不变?为什么第二列继续指向b数组?是否有任何规则来决定何时在分配时深度复制数组?

python numpy

5
推荐指数
1
解决办法
3868
查看次数

numpy中的Unicode元素字符串比较

我有一个关于与numpy和字符串数组进行相等比较的问题.假设我定义了以下数组:

x = np.array(['yes', 'no', 'maybe'])
Run Code Online (Sandbox Code Playgroud)

然后我可以测试与其他字符串的相等性,并且它与单个字符串进行元素明智的比较(以下,我认为,这里的广播规则:http://docs.scipy.org/doc/numpy-1.10.1/user/ basics.broadcasting.html?):

'yes' == x
#op : array([ True, False, False], dtype=bool)

x == 'yes'
#op : array([ True, False, False], dtype=bool)
Run Code Online (Sandbox Code Playgroud)

但是,如果我与unicode字符串进行比较,我会得到不同的行为,只有当我将数组与字符串进行比较时才会发生元素明智的比较,如果我将字符串与数组进行比较,则只进行一次比较.

x == u'yes'
#op : array([ True, False, False], dtype=bool)

u'yes' == x
#op : False
Run Code Online (Sandbox Code Playgroud)

我在numpy docs中找不到这种行为的细节,并希望有人可以解释或指出为什么与unicode字符串的比较行为不同的细节?

python arrays unicode numpy python-2.x

5
推荐指数
1
解决办法
621
查看次数

标签 统计

numpy ×2

python ×2

arrays ×1

python-2.x ×1

unicode ×1