We use string type in NumPy to store and work with text data efficiently in arrays.
String type in NumPy
numpy.array(['text1', 'text2'], dtype='S') numpy.array(['text1', 'text2'], dtype='U')
'S' means fixed-length byte strings (ASCII or bytes).
'U' means fixed-length Unicode strings (supports all characters).
import numpy as np arr = np.array(['cat', 'dog', 'bird'], dtype='S') print(arr) print(arr.dtype)
import numpy as np arr = np.array(['cat', 'dog', 'bird'], dtype='U') print(arr) print(arr.dtype)
import numpy as np arr = np.array(['apple', 'banana', 'cherry']) print(arr) print(arr.dtype)
This program shows how to create byte and Unicode string arrays in NumPy, print their types, and find the length of each string.
import numpy as np # Create a byte string array byte_arr = np.array(['red', 'green', 'blue'], dtype='S') print('Byte string array:', byte_arr) print('Data type:', byte_arr.dtype) # Create a Unicode string array unicode_arr = np.array(['red', 'green', 'blue'], dtype='U') print('Unicode string array:', unicode_arr) print('Data type:', unicode_arr.dtype) # Show length of each string element lengths = np.vectorize(len)(unicode_arr) print('Lengths of each string:', lengths)
Byte strings (dtype='S') store text as bytes and are limited to ASCII or byte data.
Unicode strings (dtype='U') store text as Unicode and support all characters like emojis or accents.
NumPy string types have fixed length, so longer strings get truncated if they exceed the set length.
NumPy supports two main string types: byte strings ('S') and Unicode strings ('U').
Use 'S' for ASCII or byte data, and 'U' for full Unicode text.
String arrays are fixed-length, so be careful with string sizes to avoid truncation.
Practice
Solution
Step 1: Understand NumPy string types
NumPy has two main string types: 'S' for byte strings (ASCII) and 'U' for Unicode strings.Step 2: Identify correct type for Unicode
Unicode strings require 'U' type to support characters beyond ASCII, like emojis or accented letters.Final Answer:
Use 'U' type for Unicode strings. -> Option AQuick Check:
Unicode text = 'U' type [OK]
- Using 'S' type for Unicode causes data loss
- Confusing numeric types with string types
- Assuming 'U' is for byte strings
Solution
Step 1: Identify byte string dtype syntax
Byte strings use dtype='S' followed by the fixed length, e.g., 'S5' for length 5.Step 2: Check options for correct dtype
np.array(['hello', 'world'], dtype='S5') uses 'S5', which is correct for byte strings of length 5.Final Answer:
np.array(['hello', 'world'], dtype='S5') -> Option CQuick Check:
Byte strings = 'S' + length [OK]
- Using 'U' instead of 'S' for byte strings
- Using invalid dtypes like 'int5' or 'float5'
- Omitting the length number after 'S'
import numpy as np arr = np.array(['cat', 'dog', 'elephant'], dtype='S5') print(arr)
Solution
Step 1: Understand dtype='S5' effect
Using dtype='S5' means fixed-length byte strings of length 5, so strings longer than 5 characters get truncated.Step 2: Check each string length and truncation
'cat' and 'dog' fit within 5 bytes, but 'elephant' is longer and gets truncated to 'eleph'.Final Answer:
[b'cat' b'dog' b'eleph'] -> Option BQuick Check:
Fixed length 5 truncates 'elephant' to 'eleph' [OK]
- Expecting full 'elephant' without truncation
- Confusing byte strings with Unicode strings
- Ignoring the 'b' prefix for byte strings
import numpy as np arr = np.array(['a', 'b', 'c'], dtype='U2') arr[0] = 'abc'
Solution
Step 1: Understand dtype='U2' limitation
dtype='U2' means Unicode strings of fixed length 2 characters only.Step 2: Check assigned string length
Trying to assign 'abc' (3 characters) to an element that only allows 2 characters causes truncation or error.Final Answer:
The string 'abc' is longer than dtype='U2' allows. -> Option DQuick Check:
Fixed-length Unicode strings truncate or error on longer input [OK]
- Thinking dtype='U2' supports any length string
- Believing NumPy arrays can't hold strings
- Confusing byte strings ('S') with Unicode ('U')
Solution
Step 1: Find the longest string length
The longest string is 'hello' with 5 characters.Step 2: Choose dtype to fit longest string
Use dtype='U5' to store Unicode strings up to length 5 without truncation.Step 3: Avoid byte string dtype for Unicode
Using 'S' type stores byte strings, not Unicode, so it may cause data loss.Final Answer:
dtype='U5' because the longest string has 5 characters. -> Option AQuick Check:
Unicode max length = dtype='U' + max length [OK]
- Using 'S' dtype for Unicode strings
- Choosing dtype length smaller than longest string
- Assuming default dtype fits all strings
Ready to prove it?
Pass the test and this pattern moves unknown
